【C#】Process ~ 別アプリを起動するには ~


■ ブラウザを起動する

private void button1_Click(object sender, EventArgs e)
{
    Process.Start("IExplore.exe", "http://blogs.yahoo.co.jp/dk521123");
}

実装注意(ブラウザ)

 * ブラウザを指定しないと、例外が発生する必要あり
   (既定のブラウザをIE以外だと例外が起きる可能性あり)

■ メーラを起動する

private void button1_Click(object sender, EventArgs e)
{
    string encMail = string.Format(
        "mailto:{0}?subject={1}&body={2}&cc={3}&bcc={4}"
        , "abc@def.com,ghi@jfk.com"
        , HttpUtility.UrlEncode("件名", Encoding.GetEncoding("shift_jis"))
        , HttpUtility.UrlEncode("本文", Encoding.GetEncoding("shift_jis"))
        , "lmn@opq.com"
        , "rst@uvw.com");

    Process.Start(encMail); 
}

実装注意(メール)

 * エンコードをする必要があるが、むやみにURLエンコードするのも危険なので適切に。
 * エンコードで、HttpUtilityが使えない場合、Uri.EscapeUriString()もある。
http://iseebi.half-done.net/?TechDoc%2FUrlEncodeWithoutHttpUtility

補足:HttpUtility.UrlEncode()を使用するには

 (1) 対象のプロジェクトを右クリックし、「プロパティ」を選択
 (2) 「アプリケーション」の「対象フレームワーク」を「.Net Framework4」などを選択
 (3) VCの「参照設定」を右クリックし、「参照の追加」を選択
 (4) [.NET]-[System.Web]を選択し、「OK」を選択すれば、使える

補足:添付ファイルをするには...

 * 通常できないらしいが、一部のメーラでは『attach="(ファイルのパス)"』でできるかも。
 (Outlookじゃできなかった)
http://dobon.net/vb/dotnet/process/openbrowser.html
 * メーラ起動からではなく、独自にメーラを作成すれば、可能。
http://www.kisoplus.com/net/mail_sub/temp.html
http://dobon.net/vb/dotnet/internet/smtpmail2.html#section1

■ 実装注意(全体)

 * Win32Exceptionなどが発生するケースがある
 * 文字制限に注意する必要がある
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.processstartinfo.arguments%28VS.80%29.aspx
.NET Framework アプリケーションの最大文字列長が 2,003 文字で、
.NET Compact Framework では 488 文字です。 
* 既定のメーラ、ブラウザなどの指定は以下の通りです
[コントロールパネル]-[インタネットオプション]-[プログラム]で指定できる

関連記事

C#】Process に関するあれこれ

https://blogs.yahoo.co.jp/dk521123/38098815.html

C#】【Form】自作Windowsアプリからブラウザを起動するには

https://blogs.yahoo.co.jp/dk521123/13069605.html

C#】Webページにアクセスする ~ WebClient ~

https://blogs.yahoo.co.jp/dk521123/22412815.html