如何从DLL内部获得HWND?
-
16-10-2019 - |
题
我有一个我想使用直接声音播放声音的DLL。为了播放声音,我需要可执行文件的HWND。我没有加载DLL的可执行文件的HWND。我如何在DLL中获得它,而不会从可执行文件中传递给它?
解决方案
您可以使用 getCurrentProcessid 获取当前的流程ID。
然后,您可以致电Enumwindows,然后检查每个窗口 getWindowThreadProcessID 找到与您的过程相关的窗口。
但是,一个更容易的选择可能是仅生成自己的窗口。您可以创建一个不可见的1x1像素窗口,并与直接声音一起使用。
即使您的呼叫过程没有可用的窗口(或定期删除窗口处理),这也具有工作的优势。
其他提示
称呼 GetGUIThreadInfo
在主线程上。这为您带来了一堆HWND。如果您需要顶级HWND,请选择任何有效的HWN(并非所有值都可以填充),并找到其最高级别的祖先 GetAncestor(GA_ROOT)
.
不隶属于 StackOverflow