gpt4 book ai didi

c# - 从另一个应用程序获取 Button 句柄

转载 作者:太空狗 更新时间:2023-10-29 20:15:04 25 4
gpt4 key购买 nike

我有一个程序需要将 BM_CLICK 消息发送到另一个应用程序按钮。我可以获得父窗口句柄但是当我尝试获取按钮句柄时如果总是返回 0

我从 Spy++ 获得了按钮标题名称和按钮类型,这似乎是正确的,但我知道我一定是弄错了。下面是我的代码

 public const Int BM_CLICK = 0x00F5;

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam);

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);



private void button1_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("QSXer");

foreach (Process p in processes)
{
////the Button's Caption is "Send" and it is a "Button".
IntPtr ButtonHandle = FindWindowEx(p.MainWindowHandle, IntPtr.Zero, "Button", "Send");
//ButtonHandle is always zero thats where I think the problem is
SendMessage(ButtonHandle, BM_CLICK, IntPtr.Zero, IntPtr.Zero);

}

}

spy 屏幕截图

alt text

最佳答案

尝试为窗口文本传递 null 而不是尝试查找任何按钮:

IntPtr ButtonHandle = FindWindowEx(p.MainWindowHandle, IntPtr.Zero, "Button", null);

之后,您可以使用第二个参数和一个新的调用来多次获取下一个按钮句柄。

您还可以尝试检查 Marshal.GetLastWin32Error 以查看错误结果是什么吗?

关于c# - 从另一个应用程序获取 Button 句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com