具体来说,一个程序正在运行,我想从程序内的文本框中提取文本。
通常,我应该使用哪些方法/主题来“进入”我系统上运行的另一个 .exe 并使用 C++ 从其中的文本框中提取数据?
我只是想要一个指向我可能实现这一目标的方式的指针。谢谢。
您可以简单地使用EnumChildWindows
and SendMessage
withWM_GETTEXT
到您想要从中获取文本的特定窗口。
“进入”GUI 应用程序(特定于 Windows)的另一种常用技术是 DLL 注入 + Windows 子类化。这可能被认为是有点高级的 windows 编程,一本关于该主题的优秀书籍是 'Windows Via C/C++'。关于这件事的简要概念本质上是:
另请注意,我上面提到的任何内容都不是“破解窗口”,这是一种定义明确的行为,由 Microsoft 有意实施。实际上,它在 MSDN 上有很好的记录。
如果您想这样做,请查看“Windows 子类化”和“设置挂钩”。
请参阅我如何构建一个工作在线扑克机器人:从 3rd-Party 应用程序中提取文本以解释@DeusAduro 提到的注入和子类技术以及其他一些相同的技术,例如挂钩 GDI 文本-输出 API。当然,如果它是一个标准的文本框,你总是可以发送一个 WM_GETTEXT 这甚至可以跨进程边界工作(实际上被设计为跨进程边界工作)。