6

ダイレクトサウンドを使用してサウンドを再生したいDLLがあります。サウンドを再生するには、実行可能ファイルのHWNDが必要です。DLLをロードする実行可能ファイルのHWNDがありません。実行可能ファイルから渡さずにDLLでそれを取得するにはどうすればよいですか?

4

2 に答える 2

6

GetCurrentProcessIdを使用して、現在のプロセスIDを取得できます。

次に、EnumWindowsを呼び出し、GetWindowThreadProcessIdを使用して各ウィンドウをチェックし、プロセスに関連付けられているウィンドウを見つけることができます。

ただし、より簡単なオプションは、独自のウィンドウを生成することです。表示されない1x1ピクセルのウィンドウを作成し、ダイレクトサウンドで使用できます。

これには、呼び出しプロセスに使用可能なウィンドウがない(またはウィンドウハンドルを定期的に削除する)場合でも機能するという利点があります。

于 2011-01-22T02:12:36.920 に答える
1

GetGUIThreadInfoメインスレッドで呼び出します。これにより、多数の HWND が取得されます。最上位の HWND が必要な場合は、有効なもの (すべての値が入力されているとは限りません) を選択し、その最上位の祖先を で見つけますGetAncestor(GA_ROOT)

于 2011-01-28T15:37:57.597 に答える