プロが教えるわが家の防犯対策術!

例えば

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub test()
Dim Handle As Long
Handle = FindWindow("IEFrame", vbNullString)
Debug.Print Handle
End Sub

と言うコードでウィンドウハンドルを取得する場合、
参照設定のどこにもチェックを入れませんが、なぜ参照設定しなくても使えるのでしょうか?

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

が参照設定の代わりになるのですか?

「APIを使う時は参照設定は不要?」の質問画像

A 回答 (1件)

こんにちは。



>参照設定

参照設定されるタイプライブラリやオブジェクトライブラリは、別に用意されたプログラムで、参照設定によって、そのクラスが呼び出され、VBAの中にその機能が組み込まれます。

Win(32) APIは、あくまでもWindowsそのものが持っている機能の一部で直接呼び出しできる関数です。[()がついているのは、32だけではなく64もあるからです。]

なお、画像の中の赤線の囲いのMessenger API Type Library は、Microsoft Messenger のことかと思います。Win32 APIとは関係ありません。APIは、Application Programming Interface の略で、Dllファイルなどでも、外部から使用できるようになっているものもあります。

なお、確か、以下は、IE のWindow を最大化させるために使うという内容の質問の時のものだと思いますが、

>Dim Handle As Long
>Handle = FindWindow("IEFrame", vbNullString)
>Debug.Print Handle

あえてこういうコードは必要ないのではないか、と思いました。
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2012/12/16 09:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています