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

c#如何在子窗口中查找按钮并通过编程方式单击,c#,C#,我想知道如何在user32 dll的帮助下以编程方式激活按钮。谢谢你的帮助 在下一个代码中,我得到了特定窗口的句柄。现在我想激活此窗口的一个按钮(打开按钮) 是否有一种方法可以搜索和打印处理程序在窗口中看到的所有内容(按钮打开、关闭……等等)? 需要帮助 这是我的密码: StringBuilder bld = new StringBuilder(256); StringBuilder className = new StringBuilder(256); GetWindowT

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

可以使用搜索所有控件

(可选)您只能搜索以下按钮:

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);
}

我应该把搜索按钮放在哪里?内部while(!handlel.Equals(IntPtr.Zero)){?thx.请帮助。我的FindWindowEx需要一个IntPtr而不是“按钮”。我如何更改它?[DllImport(“user32.dll”,SetLastError=true)]公共静态外部IntPtr FindWindowEx(IntPtr parentHandle,IntPtr childAfter,string className,IntPtr windowTitle);好的,thx我确实更改了它:如果(ptrChild==FindWindowEx(hwnd,IntPtr.Zero,“按钮”,“另存为”){SendMessage(ptrChild,WM_lbuttonown,0,IntPtr.Zero);SendMessage(ptrChild,WM_LBUTTONUP,0,IntPtr.Zero);但我没有看到任何结果。为什么?SendMessage(WM_单击)够了,我不知道,FindWindowEx找到按钮了吗?
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);
}