c#如何在子窗口中查找按钮并以编程方式单击它

本文关键字:编程 方式 单击 按钮 查找 窗口 | 更新日期: 2023-09-27 17:50:28

我想知道如何在user32 dll的帮助下以编程方式激活按钮。谢谢你的帮助。

在接下来的代码中,我得到处理我的特定窗口。现在我想激活一个按钮,这个窗口有(打开按钮)。

是否有一种方法可以搜索和打印处理程序在窗口中看到的所有内容(按钮打开,关闭…等等)?

需要帮助! !

下面是我的代码:
StringBuilder bld = new StringBuilder(256);
  StringBuilder className = new StringBuilder(256);
        GetWindowText(hwnd, bld, 256);
        GetClassName(hwnd, className, 256);  
        string text = bld.ToString();
        if (text.Length > 0)
        {
            Console.WriteLine("Pointer: " + hwnd.ToInt32().ToString() + " Window Title: " + text);
            if (text == "my_window") { 
                Console.WriteLine(bld.ToString()+"..."+className.ToString()+"..."+hwnd.ToString());
                System.IntPtr ptrChild = GetWindow(hwnd,5);
                IntPtr handll = FindWindow(className.ToString(), "my_window");
                if (handll == IntPtr.Zero)
                {
                    Console.WriteLine("not working");
                }
                SetForegroundWindow(handll);
               while (!handll.Equals(IntPtr.Zero)){ //HOW TO CHECK (FIND) FOR THE OK BUTTON?!}
..}

c#如何在子窗口中查找按钮并以编程方式单击它

您可以使用findwindowwex搜索所有控件。

IntPtr handle = FindWindowEx(parentWindow, IntPtr.Zero, null, null);
while(handle != IntPtr.Zero)
{
    GetWindowText(handle, bld, 255);
    MessageBox.Show(bld.ToString()); // writes out displayed text
    handle = FindWindowEx(parentWindow, handle, null, null);
}

可选,您可以只搜索按钮:

IntPtr handle = FindWindowEx(parentWindow, IntPtr.Zero, "BUTTON", null);
while(handle != IntPtr.Zero)
{
    GetWindowText(handle, bld, 255);
    MessageBox.Show(bld.ToString()); // writes out displayed text
    handle = FindWindowEx(parentWindow, handle, "BUTTON", null);
}