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

问题描述

|| 我想知道如何在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?!}
..}

解决方法

您可以使用FindWindowEx搜索所有控件。
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);
}
(可选)您只能搜索按钮:
IntPtr handle = FindWindowEx(parentWindow,\"BUTTON\",null);
}