VB.NET DLL【API関数(コールバック関数)】の呼び出し方法について
目的は下記(3)のAPI関数をVB.NETで呼び出したいのですが、そこにいきつくまでにいろいろと壁にぶちあたっております。
(1)API関数をVB.NETから利用するにあたって
どのような手順および調査・学習すればVB.NETからWin32 APIを独力で呼び出せるようになるのでしょうか?ネット上に情報が乏しく、いきずまっております。
(2)API関数の調査方法、またコールバック関数について
下記(a),(b)のようにWin32 API関数を宣言して、あとは呼び出し側の関数で(a),(b)で宣言したAPI関数を記述するだけで基本的には使用できるようになるという大まかなイメージはつかめております。
このあとでAPI関数をMSDNで調べると引数がHWNDやPCTSTRなど見慣れないものが出てきて、次のURL(http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html)を見ると、APIの型とVB.NETの型は違うので型変換をしなければならないとあります。またさらに私が呼び出したい関数はコールバック関数なるものでこれまた?な状態です。
そこでAPIとVB.NETの型変換の調査方法およびコールバック関数の利用方法などを教えていただけないでしょうか?
(a)DllImport属性を利用する方法
<System.Runtime.InteropServices.DllImport("DLL名")> _
Function API関数名(仮引数)
End Function
(b)Declareステートメントを利用する方法
Declare Function API関数名 Lib "DLL名" (仮引数)
(3)InstallHinfSection関数(http://msdn2.microsoft.com/en-us/library/aa376957.aspx)について
下記のコードを実行したのですが、実行時エラーにはならないのですが、APIの関数が動作してくれません。どこが悪いのかがまったく見当がつかないのですがどなたかアドバイスいただけると助かります。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
InstallHinfSection(Nothing, Nothing, "DefaultInstall 132 C:\INF_TEST\Original.inf", 0)
End Sub
Declare Function InstallHinfSection Lib "setupapi" Alias "InstallHinfSection" (ByVal hwnd As String, ByVal ModuleHandle As String, ByVal CmdLineBuffer As String, ByVal nCmdShow As Integer) As Long
APIが難しすぎていろいろとおかしなことを書いているかもしれませんが、どうぞよろしくお願いいたします。
お礼
回答ありがとうございます。 返信が遅れて申し訳ありませんでした。 私のPC環境はWindows VistaでVisual Studio 2008 Expressです。 PlatformSDKがインストールしていないのでWindows SDK v6.1をインストール後、Programs\Microsoft Windows SDK v6.1\Visual Studio Registration\Windows SDK Configuration Toolを起動しようとしたのですがエラー表示されました。 そこで、エラーの原因と対処法がWeb上(http://togarasi.wordpress.com/2009/03/16/visual-studio-2008-sp1-%E3%81%AB-windows-sdk-v6-1-%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B%E3%81%A8%EF%BC%9F/ とこのWeb中の■Bug Notification: VS2008 SP1 Breaks WinSDK Configuration Tool の下に出てくるリンク先(リンク先を貼り付けてお礼入力の確認画面上ではうまくリンクしなかったので、このWeb上からリンクしてください))に掲載されていました。 (後者の英語版にあったのですが、)Visual Studio 2008 Express(C++,C#,VB)をそれぞれ「プログラムの修復と再インストール」かけてSDKのWindows SDK Configuration Toolを起動すると、「SoftWare Developement Kit」の上でv6.1を選択し、「Make Current」をクリックすると、「Your system haas neither Visual Studio 2005,Visual Studio 2008,or a later version installed」とエラー表示されて困っています。 こういったケースにあった方、お答えいただけると助かります。 当初の質問とズレている気がしますが、APIのヒントを得る方法にツール、サンプルを増やしていきたいと考えていますのでよろしくお願いします。長い文章ですみません。