|
.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」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




