public const int WM_LBUTTONDOWN = 0x201;
public const int WM_LBUTTONUP = 0x202;[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (
int hwnd,
int wMsg,
int wParam,
ref int lParam
);
public static void SendClick(Control ctrl)
{
if (ctrl!= null)
{
SendMessage(receiver.Handle,WM_LBUTTONDOWN,0,0);
SendMessage(receiver.Handle,WM_LBUTTONUP,0,0);
}
} 试试。
public const int WM_LBUTTONUP = 0x202;[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (
int hwnd,
int wMsg,
int wParam,
ref int lParam
);
public static void SendClick(Control ctrl)
{
if (ctrl!= null)
{
SendMessage(receiver.Handle,WM_LBUTTONDOWN,0,0);
SendMessage(receiver.Handle,WM_LBUTTONUP,0,0);
}
} 试试。
sorry 。
private const UInt32 WM_LBUTTONUP = 0x202;
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr handle, UInt32 message,
int wParam,
int lParam);
[DllImport("user32.dll", EntryPoint="FindWindowEx")]
public static extern IntPtr FindWindowEx (
IntPtr hWnd1,
IntPtr hWnd2,
string lpsz1,
string lpsz2
);
[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern IntPtr FindWindow (
string lpClassName,
string lpWindowName
);public static void SendClick(IntPtr handle)
{
SendMessage(handle,WM_LBUTTONDOWN,0,0);
SendMessage(handle,WM_LBUTTONUP,0,0);
......
}
......public void InvokeSimulateMouseClick()
{
IntPtr hWindow
=MessageSender.FindWindow "WindowsForms10.Window.8.app3","YourAimForm");
IntPtr hCtrl
= MessageSender.FindWindowEx(hWindow,new IntPtr (0),"WindowsForms10.BUTTON.app3","button1");
MessageSender.SendClick(hCtrl);
}用到SPY++找到你想要模拟鼠标点击的对象的类名和其实例名称。
谢谢你的解答,可是,我要点击的地方没办法得到句柄怎么办呢?而且,如何将要点击的位置发送给应用程序呢?
int WM_LBUTTONDOWN = 0x201;
int WM_LBUTTONUP = 0x202;
int hwnd = FindWindow( "类名", "标题" );
PostMessage( hwnd, WM_LBUTTONDOWN, 1, MAKELPARAM( 700, 530) );
PostMessage( hwnd, WM_LBUTTONUP, 0, MAKELPARAM( 700, 530) );
用SPY++来追踪程序事件,非常好用!