我正在努力找出如何从另一个应用程序窗口中的控件获取文本。简而言之,我正在尝试自动化检查是否正在运行另一个应用程序的过程,然后,如果找到该应用程序,则从我认为是窗口中第一个控件之一的文本中获取文本。
应用程序中似乎没有任何子窗口。我似乎找不到使用Spy ++的任何子控件。
我可以使用
获取窗口的标题和应用程序的句柄 IntPtr handle = FindWindow(null, "Zuercher Mobile");
我似乎找不到一种遍历子控件并获取其文本的方法。示例通常显示如何从记事本中获取文本,但是您知道控件的名称是“ EDIT”。我不知道包含要尝试检索的文本的控件的名称。
我已经尝试过一个例子
private void GetAllText(IntPtr handle)
{
IntPtr Handle = Marshal.AllocHGlobal(100);
IntPtr ChildHandle = IntPtr.Zero;
int NumText = (int)SendMessage(handle, WM_GETTEXT, (IntPtr)50, Handle);
// Loop through all the textboxes that are children of Hwnd.
int childNo = 0;
while ((ChildHandle = FindWindowEx(handle, ChildHandle, "Zuercher Mobile", "")) != IntPtr.Zero)
{
IntPtr Hndl = Marshal.AllocHGlobal(200);
NumText = (int)SendMessage(ChildHandle, WM_GETTEXT, (IntPtr)200, Hndl);
Text = Marshal.PtrToStringUni(Hndl);
textBox1.Text += "(Child Number " + childNo + ") " + Text + Environment.NewLine;
Marshal.FreeHGlobal(Hndl);
childNo++;
}
}
其中仅显示0个子控件。
这怎么办?我试过了。 Problems getting text from control on another window 和 Can't get text from another application (window)
没有成功。