システムwiki

taskidからWinhandleに変換しますか?

keldsor 受付中 最終更新日:2020-09-04 08:46

なぜこのコードがTaskIDからHwndに変換されないのですか.

プライベート関数InstanceToWnd(ByVal target_pid As Long)As Long
'インスタンスハンドルのwindows ハンドルを返します.
Dim test_hwnd As Long
Dim test_pid As Long
Dim test_thread_id As Long
>'最初のwindows ハンドルを取得します.
test_hwnd=FindWindow(vbNullString、vbNullString)
'ターゲットが見つかるか、Windowsが不足するまでループします.
Do While test_hwnd<>0
'参照このwindows に親がある場合.そうでない場合、
'これはトップレベルwindows です.
If GetParent(test_hwnd)= 0 Then
'これはトップレベルwindows です.
'ターゲットインスタンスハンドルがあるかどうかを確認します.
test_thread_id=_
GetWindowThreadProcessId(test_hwnd、_
test_pid)
If test_pid=target_pid Then
'これがターゲットです.
InstanceToWnd=test_hwnd
Exit Do
End If
End If
'次のwindows を調べます.
test_hwnd=GetWindow(test_hwnd、GW_HWNDNEXT)
Loop
End Function

0(ゼロ)を返します-なぜですか?

返信リスト(回答:3)

1 #
S.A.Mar

これがあなたにアイデアを与えるかどうかわからない?

https://www.vb-helper.com/howto_shell_get_hwnd.html.

応答1# ->にスキップ
2 #
keldsor

ハ、ハ、私はそこからそれを取りました...しかし、それは私が開いているまたは利用できると私が思うより多くのWindowsでただ循環しているだけです.

原因として、必要な追加の宣言を定義しました...しかし、まったく成功しません

応答2# ->にスキップ
3 #
DanielP
これは、explorer.exeに特に問題があるようです!起動すると、たとえばメモ帳や計算など、すべてが正常に機能します.それでも、explorer.exeで同じことを行うと、コードは機能しません.