| .NET TIPS プログラムからブラウザやメーラを起動するには?デジタルアドバンテージ2004/10/01 |  | 
|  | |
「TIPS:ほかのアプリケーションを実行するには?」では、プログラム内からほかのアプリケーションを実行する方法を紹介した。この方法を利用すれば、プログラムからWebサイトのURLアドレスを指定してデフォルト・ブラウザでWebページを開いたり、メール・アドレスなどを指定してデフォルト・メーラで新規メール作成ウィンドウを開いたりすることが可能だ。本稿では、それらの具体的な実装方法を紹介する。
URLアドレスを指定してデフォルト・ブラウザでWebページを開く方法
URLアドレスを指定してデフォルトのブラウザでWebページを開く方法については、「TIPS:ほかのアプリケーションを実行するには?」の中でサンプル・プログラムとして紹介している。
具体的な実装方法は、Processクラス(System.Diagnostics名前空間)のStartメソッドに「http://」や「https://」で始まるURLアドレスを指定するだけである。以下はそのサンプル・プログラムである(前掲のTIPSと同じサンプル・プログラム)。
| 
 | |
| URLアドレスを指定してデフォルト・ブラウザでWebページを開くサンプル・プログラム(C#) | 
| 
 | |
| URLアドレスを指定してデフォルト・ブラウザでWebページを開くサンプル・プログラム(VB.NET) | 
これを実行すると、次のような画面が表示される(デフォルト・ブラウザがIEの場合)。
|  | 
| URLアドレス指定によってデフォルト・ブラウザで開かれたWebページ | 
メール・アドレスを指定してデフォルト・メーラを開く方法
次に、メール・アドレスを指定してデフォルトのメーラを開く方法だが、これもブラウザを開く方法とまったく同じである。
具体的には、ProcessクラスのStartメソッドに「mailto:」で始まるメール・アドレスを指定するだけである。以下は、これを実装したサンプル・コードである(Startメソッドの前後のコードは省略している)。
| // C# | 
| ' VB.NET | 
コード内の「foo@boo.co.jp」の部分が、メール・アドレスである。このサンプル・プログラムを実行すると、次のような画面が表示される(デフォルト・メーラがOutlookの場合)。
|  | 
| メール・アドレス指定によってデフォルト・メーラで開かれた新規メール作成ウィンドウ | 
メーラを開くときに「CC」「BCC」「件名」「本文」を含める方法
上記の例では「宛先」のみを指定しているが、実は、メール・アドレス指定でメーラの新規メール作成ウィンドウを起動する際に、これ以外の「CC」「BCC」「件名(=subject)」「本文(=body)」の値を含めることもできる(ただし、確かにOutlookやOutlook Express、Becky!などのメーラでは正しく動作したが、メーラが対応していないことも考えられるので、常にうまくいくとは考えない方がよいだろう)。
「宛先」以外の「CC」「BCC」「件名」「本文」の値は、「宛先」の後に「?」で続けて記述し、またそれぞれの値は「&」を使って連結する。すべての値を指定した場合には、次のような構文となる(項目内で不必要なものがある場合には、その項目を省略することが可能だ)。
| “mailto:<宛先>?cc=<CC>&bcc=<BCC>&subject=<件名>&body=<本文>” | 
次のサンプル・コードでは、実際にこの構文を使って、「宛先」「CC」「BCC」「件名」「本文」のすべての値を指定したうえでメーラの新規メール作成ウィンドウを起動している(なお、Startメソッドの前後のコードは省略している)。
| // C# | 
| ' VB.NET | 
上記のコードの注意点としては「宛先」となるメール・アドレスを複数指定しているところだ(「foo@boo.co.jp」「moo@boo.co.jp」)。メール・アドレスを複数指定するには、このようにして「カンマ(,)」でそれぞれのメール・アドレスを区切るか、もしくは「セミコロン(;)」で区切るとよい。なお、Outlookでは、カンマを区切り文字として使用すると、正しく処理できない場合がある。これに(ユーザー側の運用によって)対処する方法については、マイクロソフトのサポート技術情報の「[OL2003] カンマが電子メール アドレスの区切り文字として認識されない」を参照してほしい。
上記のサンプル・コードを実行すると、次のような画面が表示される。
|  | 
| 「宛先」「CC」「BCC」「件名」「本文」のすべての値を指定して表示された新規メール作成ウィンドウ | 
上記のコードで新規メール作成ウィンドウを起動する場合には、すべての文字が使えるわけではないので注意すること。例えば、メールの「件名(=subject)」や「本文(=body)」の指定で、改行や、「?」「&」「カンマ(,)」「セミコロン(;)」などといった上記の構文で使われる文字、「%」といった文字コード表記で使われる文字などは、URLエンコードされた文字コード表記に置き換えて使用する必要がある。ただし、これらのうちのカンマやセミコロンについては、筆者の環境のOutlookやBecky!で試した限りでは、必ずしもURLエンコードしなくても文字化けなどの問題はなかった。
このような文字コード表記への置き換えが必要な(もしくは置き換えた方が無難な)代表的な文字を、次の表にまとめた。
| 文字 | 文字コード表記 | 
| 改行 | %0D%0A | 
| ? | %3F | 
| & | %26 | 
| カンマ(,) | %2C | 
| セミコロン(;) | %3B | 
| ダブル・クォーテーション(") | %22 | 
| % | %25 | 
|  | |
| 文字コード表記への置き換えが必要な代表的な文字 | |
| 例えば、「改行」を行う場合には、実際の文字の代わりに「%0D%0A」というURLエンコードされた文字コード表記を使用する。 | |
また、日本語などの2バイト文字もURLエンコードしないと、文字化けする可能性があるので、注意すること。実際に、2バイト文字などを(日本語Windows環境と同じShift-JISコードで)URLエンコーディングしたい場合は、次のいずれかのようにしてURLエンコードすればよい(コード例はC#)。
- string encoded = System.Web.HttpUtility.UrlEncode("あいうえお", System.Text.Encoding.GetEncoding("Shift-JIS"));
- string encoded = System.Web.HttpUtility.UrlEncode("あいうえお", System.Text.Encoding.GetEncoding(932));
- string encoded = System.Web.HttpUtility.UrlEncode("あいうえお", System.Text.Encoding.Default);
上のコードにあるHttpUtilityクラス(System.Web名前空間)のUrlEncodeメソッドのデフォルト・エンコーディングはUTF-8だが、Encodingクラス(System.Text名前空間)のDefaultプロパティの値はShift-JISとなっているので、注意してほしい。URLエンコーディングの詳細については、「TIPS:文字列をURLエンコードするには?」および「TIPS:Encodingクラスで扱えるエンコーディング名は?」を参照してほしい。
次のサンプル・コードは、上記のURLエンコーディングされた文字を「本文」内に使ってメーラの新規メール作成ウィンドウを開いている。
| // C# | 
| ' VB.NET | 
これを実行すると、次のような画面が表示される。
|  | 
| 文字コードへの置き換えが必要な文字の使用例 | 
 なお、デフォルトのメーラが正常にインストールされていない場合や、正しくデフォルト・メーラが指定されていない場合などでは、上記サンプル・プログラムを実行しても正しくメーラの新規メール作成ウィンドウが起動されない場合があるので注意してほしい。
| カテゴリ:クラス・ライブラリ 処理対象:Windows環境 カテゴリ:クラス・ライブラリ 処理対象:URL 使用ライブラリ:Processクラス(System.Diagnostics名前空間) 使用ライブラリ:HttpUtilityクラス(System.Web名前空間) 使用ライブラリ:Encodingクラス(System.Text名前空間) 関連TIPS:ほかのアプリケーションを実行するには? 関連TIPS:文字列をURLエンコードするには? 関連TIPS:Encodingクラスで扱えるエンコーディング名は? | 
| 
 
 
 | ||||||||||||||||||||||||||||
|  | 「.NET TIPS」 | 
- 第2回 簡潔なコーディングのために (2017/7/26)
 ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
- 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
 Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
- 第1回 明瞭なコーディングのために (2017/7/19)
 C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
- Presentation Translator (2017/7/18)
 Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|  | |
| 
 | |
|  | 

 









