6

我有一个想要使用 Direct Sound 播放声音的 DLL。为了播放声音,我需要可执行文件的 HWND。我没有加载 DLL 的可执行文件的 HWND。如何在不从可执行文件中传递它的情况下在 DLL 中获取它?

4

2 回答 2

6

您可以使用GetCurrentProcessId来获取当前进程 ID。

然后,您可以调用 EnumWindows,并使用GetWindowThreadProcessId检查每个窗口以找到与您的进程关联的窗口。

但是,更简单的选择可能是只生成您自己的窗口。您可以创建一个不可见的 1x1 像素窗口,并将其与 Direct Sound 一起使用。

即使您的调用进程没有可用的窗口(或定期删除窗口句柄),这也具有工作的优势。

于 2011-01-22T02:12:36.920 回答
1

调用GetGUIThreadInfo主线程。这会为您带来一堆 HWND。如果您需要顶级 HWND,请选择任何有效的(并非所有值都可以填写)并使用GetAncestor(GA_ROOT).

于 2011-01-28T15:37:57.597 回答