DLL内からHWNDを取得するにはどうすればよいですか?
-
16-10-2019 - |
質問
ダイレクトサウンドを使用してサウンドを再生したいDLLがあります。サウンドを再生するには、実行可能ファイルのhwndが必要です。 DLLをロードする実行可能ファイルのhwndはありません。実行可能ファイルから渡さずにDLLでそれを取得するにはどうすればよいですか?
解決
使用できます GetCurrentProcessid 現在のプロセスIDを取得します。
その後、EnumWindowsに電話して、各ウィンドウを確認できます getWindowThreadProcessid プロセスに関連付けられたウィンドウを見つける。
ただし、より簡単なオプションは、独自のウィンドウを生成することです。表示されていない1x1ピクセルウィンドウを作成し、直接サウンドで使用できます。
これには、呼び出しプロセスに使用可能なウィンドウがなくても(または定期的にウィンドウハンドルを削除する)、機能するという利点があります。
他のヒント
電話 GetGUIThreadInfo
メインスレッドで。これにより、hwndsの束が得られます。トップレベルのhwndが必要な場合は、有効なもの(すべての値が入力されるわけではない)を選択して、そのトップレベルの祖先を見つけてください GetAncestor(GA_ROOT)
.
所属していません StackOverflow