|
▼EMU さん こんにちは
>名前を取りたいのは、ウィンドウズ上のツールバーに表示されている
>フォルダー名やアプリケーション名に付随している名前です。
>(たとえば、「新しいフォルダ」や「Book1」や「AAAA.TXT」といったものです)
なるほど!
と、言う事は、「Excel VBA質問箱 IV - Microsoft Internet Explorer」も
取得したいと言う事ですね?
それなら以下のコードを試してみてください。
'<<ここから>>
'**************************************************************************
' API宣言
'**************************************************************************
Public Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" _
(ByVal hWnd As Long) As Long
Public Declare Function GetClassName Lib "user32" _
Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
'Public Declare Function GetWindowPlacement Lib "user32" _
' (ByVal hWnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Public Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindow Lib "user32" _
(ByVal hWnd As Long, ByVal wCmd As Long) As Long
'**************************************************************************
' 定数宣言
'**************************************************************************
'GetWindowで使用
Public Const GW_OWNER = 4&
'**************************************************************************
' ローカル変数宣言
'**************************************************************************
Private gintRow% 'セルの行
Private gintCol% 'セルの列
'**************************************************************************
' マクロ
'**************************************************************************
Sub ボタン1_Click()
gintRow% = 0: gintCol% = 1
Call EnumWindows(AddressOf EnumWindowsCallBack, 0&)
End Sub
'==========================================================================
' Function : EnumWindows()のコールバック関数
' Calling : Boolean = EnumWindowsCallBack( ByVal Long1, ByRef Long2 )
' Parameters: Long1 = ウィンドウへのハンドル
' : Long2 = パラメータ
' Return : True
' Note :
'==========================================================================
Public Function EnumWindowsCallBack( _
ByVal phWnd As Long, _
ByRef plngParameter As Long _
) As Boolean
Dim strWindowName As String * 128 'ウィンドウ名
Dim strClassName As String * 128 'クラス名
Dim lngResult As Long 'GetWindowText()の戻り値
'戻り値、変数初期化
EnumWindowsCallBack = False
strWindowName = ""
strClassName = ""
lngResult = 0&
'ウィンドウ名取得
lngResult = GetWindowText(phWnd, strWindowName, Len(strWindowName))
'クラス名取得
Call GetClassName(phWnd, strClassName, Len(strClassName))
'見えているウィンドウだけ選ぶ
If (IsWindowVisible(phWnd)) _
And (GetWindow(phWnd, GW_OWNER) = 0) _
And (lngResult <> 0) _
And (Left(strClassName, 7) <> "Progman") Then
'行のインクリメント
gintRow% = gintRow% + 1
'セルにウィンドウ名をセット
'↓ここのところを好きなように直して使ってください
Sheets("Sheet1").Cells(gintRow%, gintCol%) = strWindowName
End If
'戻り値に True をセット
EnumWindowsCallBack = True
End Function
'<<ここまで>>
|
|