●概要●
宣言文 Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long)
As Long
設定項目 内容
hwnd ウィンドウハンドルを指定[省略不可]
引数で指定したウィンドウハンドルを持つウィンドウの可視状態を取得します。
可視状態の場合には「0」以外の値を、不可視状態の場合および失敗時には「0」を返します。
次のコードは、可視ウィンドウのクラス名とタイトルを、タブ区切りのテキストファイルとして出力するサンプルです。
●サンプル●
Private Declare Function GetWindow _
Lib "user32" _
(ByVal hwnd As Long _
, ByVal wCmd As Long) _
As Long
Private Declare Function GetClassName _
Lib "user32" Alias "GetClassNameA" _
(ByVal hwnd As Long _
, ByVal lpClassName As String _
, ByVal nMaxCount As Long) _
As Long
Private Declare Function GetWindowText _
Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long _
, ByVal lpString As String _
, ByVal cch As Long) As Long
Private Declare Function IsWindowVisible _
Lib "user32" _
(ByVal hwnd As Long) _
As Long
Private Const GW_HWNDFIRST As Long = 0
Private Const GW_HWNDNEXT As Long = 2
Private Const ERROR_SUCCESS As Long = 0
'可視ウィンドウのクラス名、タイトルを列挙する
Sub Sample()
Dim myHwnd As Long
Dim myFixClassName As String * 255
Dim myFixCaption As String * 255
Dim myClassName As String
Dim myCaption As String
Dim myFNo As Integer, myFName As String
Dim myBuf() As String, i As Long
ReDim myBuf(0) As String
'タイトル行
myBuf(0) = "クラス名" & vbTab & "タイトル"
'最前面のウィンドウのウィンドウハンドルを取得
myHwnd = GetWindow(Application.hWndAccessApp, GW_HWNDFIRST)
Do Until myHwnd = ERROR_SUCCESS
'可視であれば処理を行う
If CBool(IsWindowVisible(myHwnd)) Then
'クラス名の取得
GetClassName myHwnd, myFixClassName, Len(myFixClassName)
myClassName = Left(myFixClassName _
, InStr(myFixClassName, vbNullChar) - 1)
'タイトルの取得
GetWindowText myHwnd, myFixCaption, Len(myFixCaption)
myCaption = Left(myFixCaption _
, InStr(myFixCaption, vbNullChar) - 1)
'配列に格納
i = i + 1
ReDim Preserve myBuf(i) As String
myBuf(i) = myClassName & vbTab & myCaption
End If
'次のウィンドウのウィンドウハンドルを取得
myHwnd = GetWindow(myHwnd, GW_HWNDNEXT)
Loop
'テキストファイルに出力
myFNo = FreeFile
myFName = CurrentProject.Path & "\WindowInfo.txt"
Open myFName For Output As #myFNo
Print #myFNo, Join(myBuf, vbCrLf)
Close #myFNo
End Sub
●補足●
データベースファイルがあるのと同じフォルダに「WindowInfo.txt」が自動作成され、可視ウィンドウのクラス名とタイトルが出力されます。結果はこのテキストファイルを開いて見てみてください。