我正在创建一个应用程序来补充我们第三方应用程序上提供的数据。他们没有开放的 API,所以我不得不使用 WM_GETTEXT 来获取我们正在查看的信息。这适用于窗口标题,但某些窗口我需要在屏幕上找到唯一标识符。如果我单击或通过我需要的框按标签,我会得到文本。但是,如果我不这样做,它只会返回空白。
这是非常简单的代码,如果必须的话,我可以用 C++ 编写一个包装器,尽管我现在不想这样做(我想我稍后出于性能原因必须这样做,但现在我只是想找出所有我稍后需要完整申请的信息)
StringBuilder sb = new StringBuilder(1024);
length = SendMessage(hWnd, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero);
int successText = (int)SendMessage(hWnd, WM_GETTEXT, (IntPtr)sb.Capacity, sb);
我试过只发送一堆制表键按下,但即使使用 keybd_event 也需要大约一秒钟的时间才能将所有 44 个字段迭代回起始字段,这实际上是不可接受的。
如果有帮助的话,原始应用程序是 90 年代后期的 powerbuilder 应用程序。