【发布时间】:2015-04-18 21:39:19
【问题描述】:
我需要枚举桌面窗口以获取 Internet Explorer 等应用程序的句柄。我想出了一种方法,方法是向桌面发送键来模拟调用任务切换机制的 ALT+TAB。我激活每个窗口,以便获得句柄和标题。然后我使用标题来确定这是否是感兴趣的窗口。但这是一个丑陋的解决方案。
我知道“EnumThreadWindows function”可以与“EnumThreadWndProc callback function”一起使用,但我不知道如何在 VFP 中实现它。特别是,我不知道如何在函数调用中暗示 DeskTop。
BOOL WINAPI EnumThreadWindows(
_In_ DWORD dwThreadId,
_In_ WNDENUMPROC lpfn,
_In_ LPARAM lParam
);
第一个参数“dwThreadId”表示线程的ID,我能想到的只是窗口是DeskTop 的子级。那么我该如何指定呢?
如果有人对窗口函数有一些经验,如果你知道如何在这里帮助我,我将不胜感激
丹麦
【问题讨论】:
-
你似乎做事很艰难。
EnumWindows()枚举所有顶级窗口(“桌面窗口”的技术术语);为什么不使用它?你想对想要的窗口做什么? -
我正在尝试做一些自动化来加快一些任务。我知道 OLE 自动化并经常使用它。但有些事情根本无法用 OLE 完成。
-
@andlabs 我很可能做错了。我正在尝试找到一个特定的窗口,以便我可以单击它并向它发送一些数据。我认为枚举它们我可以通过测试标题偶然发现我想要的那个
-
您应该仍然能够仅使用
EnumWindows()和GetWindowText()和GetWindowTextLength()枚举顶级窗口;没必要用线程鬼混。 -
我将使用 EnumWindows 功能...感谢您的建议。我什至从未见过那个功能。这就是我看线程版本的原因。
标签: windows winapi visual-foxpro