ページ 11

ウィンドウ名とハンドルの取得

Posted: 2006年5月12日(金) 19:32
by ゲスト
現在起動しているアプリケーションのウィンドウ名とハンドルを
列挙して表示することは可能でしょうか。

Re: ウィンドウ名とハンドルの取得

Posted: 2006年5月12日(金) 20:37
by 7
> 現在起動しているアプリケーションのウィンドウ名とハンドルを
> 列挙して表示することは可能でしょうか。
まさにウィンドウを列挙するEnumWindows()関数というのが存在します。
全てのウインドウを列挙する

追記。
EnumWindows()関数使ったことがなかったのでリンクの紹介だけだったんですけど、動かしてみたのでコードを提示することもできます。

Posted: 2006年5月13日(土) 08:58
by ゲスト
上手くいきませんでした。コードをお願いします。

Posted: 2006年5月13日(土) 17:21
by 7
> 上手くいきませんでした。コードをお願いします。
何をして上手くいかなかったんでしょう?

Posted: 2006年5月13日(土) 18:29
by ゲスト
説明不足すみません。
リストボックスに追加できなかったのです。

Posted: 2006年5月13日(土) 19:32
by 7
> 説明不足すみません。
説明不足過ぎですね( ̄□ ̄;)

リストボックスに項目を追加するには LB_ADDSTRING をリストボックスに送信してやります。

コード: 全て選択

Function EnumWndProc(ByVal hWnd As HWND,ByVal lParam As LPARAM) As BOOL
Dim wndName As BytePtr	' ウィンドウ名を持つ
Dim length As Long	' NULLを含むウィンドウ名の長さを持つ

	length=GetWindowTextLength(hWnd)+1
	wndName=calloc(length)
	If GetWindowTextLength(hWnd,wndName,length) Then
		SendMessage(GetDlgItem(hMainWnd,ListBox1),LB_ADDSTRING,NULL,wndName)
	End If
	free(wndName)

	EnumWndProc=TRUE
End Function