从一个程序操作另一个程序的按钮
我查询了网上很多资料。最后代码如下。
[DllImport( "user32.dll ")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport( "user32.dll ", CharSet = CharSet.Auto)]
public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
private void button1_Click(object sender, EventArgs e)
{
Process p = Process.Start(textBoxNewFormLocation.Text);
IntPtr ActiveWindowHandle = p.MainWindowHandle;
IntPtr hwnd_button = FindWindowEx(ActiveWindowHandle, new IntPtr(0), "WindowsForms10.BUTTON.app3 ", "button4 ");
const int BM_CLICK = 0x00F5;
Message msg = Message.Create(hwnd_button, BM_CLICK, new IntPtr(0), new IntPtr(0));
PostMessage(msg.HWnd, msg.Msg, msg.WParam, msg.LParam);
}
问题是第2步获取按钮句柄总是失败,获取的值为0.
是我语法有误么?
请指教。
------解决方案--------------------试试这个:
IntPtr hwnd_button = FindWindowEx(ActiveWindowHandle, null, "button4 ");
------解决方案--------------------改一下:
FindWindowEx(ActiveWindowHandle, new IntPtr(0), null, "button4 ");