如果不是出于学术练习的其他原因,我希望能够阅读写入 Windows 应用程序表单的文本。该程序似乎是用非 .NET 编写的,但在 .NET 术语中,我认为您会将程序描述为具有带有标签的表单,我想从该标签中读取文本。
我相信我可以看到使用 User32!TextOut(以及其他区域的 User32!DrawString)函数将文本写入屏幕。但是,如果我不必 Hook 该函数来获取我正在寻找的信息,而是直接从表单中读取它,那就太好了。
那么,给定一个窗口的句柄,是否可以使用一些类似的 API 或其他巧妙的方法,使用 TextOut 和 DrawString 等函数读取写入该窗口的文本?
还是我的做法不对?我是否应该只 hook 函数并在每次调用时查找文本并祈祷?
谢谢!
最佳答案
如果文本以标准方式存储在控件上,您可以使用 SendMessage
Win32.SendMessage(controlHandle, Win32.WM_GETTEXTLENGTH, 0, null);
如果在编写控件时考虑到了安全性,则几乎可以肯定文本不会以可通过 Windows API 查询的格式存储。
我曾经使用一个名为 Snadboy Revelation 的程序从程序中获取忘记的密码(刚刚显示为 *****)。启示录使用了同样的技巧。然而,大多数现代软件都隐藏了密码和类似字段的文本,因此如今这已经没有那么大的用处了。
更新:
找到 source code对于 Windows Spy 应用程序。
关于windows - 从 Windows 窗体读取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703343/