プロセスIDからウィンドウハンドル
- 題名: プロセスIDからウィンドウハンドル
- 著者: らら
- 日時: 2012/04/17 4:42:47
- ID: 30335
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: プロセスIDからウィンドウハンドル
- 著者: Azulean
- 日時: 2012/04/17 7:06:30
- ID: 30336
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: プロセスIDからウィンドウハンドル
- 著者: 魔界の仮面弁士
- 日時: 2012/04/17 9:07:56
- ID: 30337
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: プロセスIDからウィンドウハンドル
- 著者: らら
- 日時: 2012/04/17 9:42:54
- ID: 30339
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
下記HPを見て、プロセスIDからウィンドウハンドルをつかもうとしたのですが。
x86でビルドすると0が帰ってきてしまいます。
他ライブラリの関係上 x86でのビルドが必須となるのですが。
64bit環境だとこの方法ではだめなのでしょうか?
http://homepage2.nifty.com/nonnon/Win32Api/Win32ApiEtc.html
Private Const GW_HWNDNEXT = 2
Private Declare Function GetParent Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32" _
(ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, ByRef lpdwprocessid As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" _
(ByVal hwnd As Long) As Long
' プロセスID(pid)をウィンドウハンドル(hwnd)に変換する
Public Function GetHwndFromPid(ByVal pid As Long) As Long
Dim hwnd As Long
hwnd = FindWindow(vbNullString, vbNullString)
Do Until hwnd = 0
If GetParent(hwnd) = 0 And IsWindowVisible(hwnd) <> 0 Then
If pid = GetPidFromHwnd(hwnd) Then
GetHwndFromPid = hwnd
Exit Do
End If
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop
End Function
' ウィンドウハンドル(hwnd)をプロセスID(pid)に変換する
Public Function GetPidFromHwnd(ByVal hwnd As Long) As Long
Dim pid As Long
Call GetWindowThreadProcessId(hwnd, pid)
GetPidFromHwnd = pid
End Function