.NET TIPS Win32 API呼び出しを手軽に記述するには?デジタルアドバンテージ2004/06/04 |
|
|
.NETプログラムからWin32 APIを呼び出すには、「TIPS:Win32 APIやDLL関数を呼び出すには?」で解説しているように、次のようなWin32 APIの宣言が事前に必要となる(C#の場合)。
[DllImport("kernel32.dll")]
extern static bool Beep(uint dwFreq, uint dwDuration);
このため、通常の.NET Framework上のメソッドの呼び出しと比べて、Win32 APIの呼び出しはコーディングが少し面倒だ。そこで本稿では、このWin32 APIの宣言部分のコーディングを簡略化する方法を紹介する。
その方法とは、「PINVOKE.NETアドイン」というVisual Studio .NET(以降、VS.NET)用のアドイン・ツールを使うことである。PINVOKE.NETアドインは、Win32 APIの宣言部分のコードを生成するためのツールである。これにより、Win32 APIのDLL名やパラメータの型などをいちいち調べなくてもWin32 APIを呼び出せるようになるので大変便利だ。このツールでは主に、C#とVB.NETのコードを生成できる。
ただし、VS.NET用のアドインなので、使用するにはVS.NETが必須である。また、Win32 APIの宣言をインターネット上のサーバ(www.pinvoke.net)から取得するので、インターネットに接続できる必要がある。
まずは、PINVOKE.NETアドインを入手して、インストールしよう。
PINVOKE.NETアドインの入手とインストール
PINVOKE.NETアドインは、次のサイトからダウンロードして入手できる(次のサイトを訪れて、アドイン・ツールのタイトル名をクリックするとダウンロードできる)。
ダウンロードしたpinvoke.zipファイルを解凍して、その中にあるSetup.exeを実行すればインストールが行われる。インストールでは、画面の指示(英語)に従ってインストールしてほしい(基本的に[Next]ボタンを押せばよい)。
インストールが完了すれば、さっそくVS.NET上でPINVOKE.NETアドインが使用できるはずだ。
PINVOKE.NETアドインの使用方法
PINVOKE.NETアドインを使用するには、まずVS.NETを起動して、Win32 APIを使用したいソース・ファイルを開く。そして、Win32 APIの宣言を追加したい位置で右クリックしてコンテキスト・メニューを表示する。そのメニューから[Insert PInvoke Signatures]を選択する。
PINVOKE.NETアドインの呼び出し |
Win32 APIを使用したいソース・ファイルをVS.NETのコード・エディタで開いて、Win32 APIの宣言を追加したい位置で右クリックしてコンテキスト・メニューを表示し、そのメニューから[Insert PInvoke Signatures]を選択する。 |
すると、[Insert PInvoke Signatures]ダイアログが表示される。このダイアログでWin32 APIを検索し、検索結果から使用したいWin32 APIの宣言を選択する。次の画面は、このダイアログで「Beep」というWin32 APIを検索して、検索結果からC#版の宣言を選択したところだ。
上のダイアログでWin32 APIの宣言の挿入が実行されると、実際には次のようなコードが追加される。
|
|
PINVOKE.NETによって追加されたC#の宣言 |
|
|
PINVOKE.NETによって追加されたVB.NETの宣言 |
なお、「PINVOKE.NETアドインの呼び出し」の画面で右クリックして表示されるコンテキスト・メニューから[Contribute PInvoke Signatures and Types]を選択した場合、Win32 APIの宣言をサーバへ追加するためのダイアログが表示される。もしPINVOKE.NETアドインで検索してWin32 APIの宣言が存在しなければ、このダイアログを使って項目追加に協力することができる。ただし、実際に追加されるまでには数日かかるようだ。
カテゴリ:Visual Studio .NET 処理対象:アドイン カテゴリ:クラス・ライブラリ 処理対象:Win32 API 関連TIPS:Win32 APIやDLL関数を呼び出すには? |
|
「.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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|