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?!}
..}
您可以使用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);
}