【问题标题】:How to enumerate active windows on the desktop Win7 with Visual FoxPro如何使用 Visual FoxPro 枚举桌面 Win7 上的活动窗口
【发布时间】: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


【解决方案1】:

news2news.com 上的“列出 Windows 桌面的子窗口”VFP 示例代码是否符合您的要求?:

http://www.news2news.com/vfp/?example=27&PHPSESSID=0544069194f7f507abc54ddebcbe26a0

【讨论】:

  • 为链接提供上下文。仅链接的答案不是好的答案。见How do I write a good answer?
  • DeKoss,不客气! @IInspectable:你是对的,我通常会这样做 - 在这种情况下不是,因为链接的文章只包含引用的标题和示例代码,据我所知,后者是网站所有者的明确私有财产
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多