2

具体来说,一个程序正在运行,我想从程序内的文本框中提取文本。

通常,我应该使用哪些方法/主题来“进入”我系统上运行的另一个 .exe 并使用 C++ 从其中的文本框中提取数据?

我只是想要一个指向我可能实现这一目标的方式的指针。谢谢。

4

3 回答 3

4

您可以简单地使用EnumChildWindowsand SendMessagewithWM_GETTEXT到您想要从中获取文本的特定窗口。

于 2009-07-12T01:19:14.727 回答
4

“进入”GUI 应用程序(特定于 Windows)的另一种常用技术是 DLL 注入 + Windows 子类化。这可能被认为是有点高级的 windows 编程,一本关于该主题的优秀书籍是 'Windows Via C/C++'。关于这件事的简要概念本质上是:

  1. 将您的自定义 DLL 注入目标程序的地址空间。
  2. 查找目标文本框的 HWND。
  3. 子类化与更改/编辑此文本框相关的功能。
  4. 现在,每当有人编辑/更改文本时,您的函数将首先被调用,允许您查看/操作文本。您甚至可以选择不将其转发到普通处理程序。

另请注意,我上面提到的任何内容都不是“破解窗口”,这是一种定义明确的行为,由 Microsoft 有意实施。实际上,它在 MSDN 上有很好的记录。

如果您想这样做,请查看“Windows 子类化”和“设置挂钩”。

于 2009-07-12T01:33:29.547 回答
0

请参阅我如何构建一个工作在线扑克机器人:从 3rd-Party 应用程序中提取文本以解释@DeusAduro 提到的注入和子类技术以及其他一些相同的技术,例如挂钩 GDI 文本-输出 API。当然,如果它是一个标准的文本框,你总是可以发送一个 WM_GETTEXT 这甚至可以跨进程边界工作(实际上被设计为跨进程边界工作)。

于 2009-07-12T08:25:47.197 回答