我想要你使用SendMessage
或PostMessage
按下另一个应用程序中的按钮
我有一个示例代码通过获取Window Handle来执行此操作,但它不起作用
我还使用"WinDowse"获取所需信息.这是代码
private const uint BM_CLICK = 0x00F5;
private const uint WM_LBUTTONDOWN = 0x0201;
private const uint WM_LBUTTONUP = 0x0202;
private void PushOKButton(IntPtr ptrWindow)
{
WindowHandle = FindWindow(null, "Form1");
if (ptrWindow == IntPtr.Zero)
return;
IntPtr ptrOKButton = FindWindowEx(ptrWindow, IntPtr.Zero, "Button", "&Yes");
if (ptrOKButton == IntPtr.Zero)
return;
SendMessage(ptrOKButton, WM_LBUTTONDOWN, 0, 0);
SendMessage(ptrOKButton, WM_LBUTTONUP, 0, 0);
SendMessage(ptrOKButton, BM_CLICK, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
在c#中有一个Compelete Suloution?
你的总体思路是正确的。自动化总是有技巧的。
按钮向下/向上与单击的原始操作非常接近,但并不完全相同。你会想要考虑
BM_Click 是一条额外的 win32 消息,当鼠标单击按钮时发送 - 如果控件是单独使用此消息的正确类型,则这是更短的方法并且更容易。
我们做了一些努力来防止诸如使用 WM_GetText 来从外部应用程序编辑密码之类的事情,请注意,根据目标应用程序,您可能还会遇到问题。
不幸的是,我现在没有 C# 示例代码供您使用。
也许您可以研究一下AutoIT以节省一些时间。