从另一个窗口上的特定控件获取文本

时间:2019-04-17 21:05:37

标签: c# interop

我正在努力找出如何从另一个应用程序窗口中的控件获取文本。简而言之,我正在尝试自动化检查是否正在运行另一个应用程序的过程,然后,如果找到该应用程序,则从我认为是窗口中第一个控件之一的文本中获取文本。

应用程序中似乎没有任何子窗口。我似乎找不到使用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 windowCan't get text from another application (window)

没有成功。

0 个答案:

没有答案