关于C#模拟鼠标的问题

pangdecai 2013-10-02 11:10:19
想做一个类似于按键精灵的东西,帮助我玩玩网页游戏,可是研究了将近一天也没法做到鼠标点击的效果,郁闷,控件选用webBrowser,经测试,如果用webBrowser加载网页,是可以后台点击的,但是加载完flash就不可以,不知道为什么,句柄已经用spy++测试,没有问题,肯定是flash窗口的句柄,用PostMessage和SendMessage均做测试,无结果,请高手作答

void SendMouseClick(int PointX, int PointY)
{
if(this.webBrowser1.InvokeRequired)
{
SendMouseCallback sendMouseCallback = new SendMouseCallback(SendMouseClick);
this.webBrowser1.Invoke(sendMouseCallback, PointX, PointY);
}
else
{
IntPtr handle = this.webBrowser1.Handle;
StringBuilder className = new StringBuilder(100);
while (className.ToString() != "MacromediaFlashPlayerActiveX") // The class control for the browser
{
handle = GetWindow(handle, 5); // Get a handle to the child window
GetClassName(handle, className, className.Capacity);
}
IntPtr lParam = (IntPtr)((PointY << 16) | PointX); // The coordinates
IntPtr wParam = IntPtr.Zero; // Additional parameters for the click (e.g. Ctrl)
const uint downCode = 0x201; // Left click down code
const uint upCode = 0x202; // Left click up code
PostMessage(handle, downCode, wParam, lParam); // Mouse button down
Thread.Sleep(1);
PostMessage(handle, upCode, wParam, lParam); // Mouse button up
Thread.Sleep(200);
SendMessage(handle, downCode, wParam, lParam); // Mouse button down
Thread.Sleep(200);
SendMessage(handle, upCode, wParam, lParam); // Mouse button up
}
}
...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
devmiao 2013-10-03
  • 打赏
  • 举报
回复
用mouse_event这个api。
linuxca 2013-10-03
  • 打赏
  • 举报
回复

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧