我正在尝试通过应用程序的控制句柄从另一个应用程序中检索文本。如果控件是“静态”的,我没有问题,但我的代码似乎不适用于“编辑”控件。正如 MSDN 所说,GetWindowText 无法从 EDIT 控件中检索文本,但也许您知道实现此目的的另一种方法?
我当前的代码在这里:
Dim newHwnd As IntPtr = Handler.GetClassByPosition(ParentHwnd, cls, classPosition)
Dim length As Integer = Handler.GetWindowTextLength(newHwnd)
Dim sb As New String(" ".Chars(0), length + 1)
If cls = "edit" Then
Handler.GetWindowText(newHwnd, sb, sb.Length)
End If
其中 GetClassByPosition 通过指定父句柄、类名(静态、编辑或按钮)和 classPosition(在循环中使用 - 现在不重要)返回控件的句柄
正如我所说,它适用于 STATIC(标签等),但如果我从该外部应用程序的 EDIT(文本框)控件中检索文本,它会返回 0。
更新:
我尝试了以下解决方案,如果数据是整数但如果它包含任何字母,则成功返回数据,结果为 0:
Dim tmpstr As IntPtr = Marshal.AllocHGlobal(100)
Dim NumText = API.SendMessage(Hwnd, API.WM_GETTEXT, 200, tmpstr )
NumText = Marshal.PtrToStringAnsi(tmpstr )
Return NumText
在此先感谢,尼古拉