我有一个我想使用直接声音播放声音的DLL。为了播放声音,我需要可执行文件的HWND。我没有加载DLL的可执行文件的HWND。我如何在DLL中获得它,而不会从可执行文件中传递给它?

有帮助吗?

解决方案

您可以使用 getCurrentProcessid 获取当前的流程ID。

然后,您可以致电Enumwindows,然后检查每个窗口 getWindowThreadProcessID 找到与您的过程相关的窗口。

但是,一个更容易的选择可能是仅生成自己的窗口。您可以创建一个不可见的1x1像素窗口,并与直接声音一起使用。

即使您的呼叫过程没有可用的窗口(或定期删除窗口处理),这也具有工作的优势。

其他提示

称呼 GetGUIThreadInfo 在主线程上。这为您带来了一堆HWND。如果您需要顶级HWND,请选择任何有效的HWN(并非所有值都可以填充),并找到其最高级别的祖先 GetAncestor(GA_ROOT).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top