2012年8月5日日曜日

[ExcelVBA] FindWindow


■説明
クラス名やウィンドウ名からウィンドウハンドルを探す関数

■宣言
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
第一引数:取得したいウィンドウのクラス名を指定します。
第ニ引数:ウィンドウのタイトルを指定します。
戻り値:関数が成功するとハンドルが返ってきます。失敗すると0が返ってきます

クラス名の調べ方については下記を参考にしてみてください。
Class名の調べ方

■サンプルコード
電卓のハンドルを取得する方法です。
電卓のクラス名はSciCalcです。
Option Explicit

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

Sub SampleCode()
    Dim hwnd As Long
    hwnd = FindWindow("SciCalc", "電卓")
    Debug.Print "電卓のハンドル:" & hwnd
End Sub

クラス名とウィンドウタイトル名の指定のみなのでさほど難しいことはなさそうですね。
ちなみに、複数の電卓を開いている場合、一番手前側にある電卓のハンドルを取得するようです。

0 件のコメント: