关于c#后台模拟鼠标按键...

莫名其妙的人参果 2019-01-23 10:58:25
这几天玩了个游戏,要求按图画画做东西(了不起的修仙模拟器 画符),寻思做个描点画的工具,然后可以自己调整下,毕竟人画到次次对还是很难的....结果出现这个情况了。能描点也能自己移动按键,但是好像不能切换窗口,一切回游戏窗口好像模拟鼠标的操作就停止了。然后我就设置 工具窗口可透视(我也不知道怎么描述这个功能啊,也是看别人代码弄的,就是工具窗口可见,但是 效果实际到工具窗口后面的那个窗口上去了),但是好像模拟的鼠标点击不能透过去,工具窗口透视后,手动点击鼠标是有用的,但是下面这个代码模拟鼠标确只能移动鼠标,点击好像没有效果....求大神搭救...
 string[] dp = dangqianf.Split('G');
for (int i = 0; i < dp.Length; i++)
{
string[] dian = dp[i].Split('H');
Point ty = pictureBox1.PointToScreen(did(dian[0]));
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, ty.X * 65536 / 1920, ty.Y * 65536 / 1080, 0, 0);
// PostMessage(Process.GetProcessesByName("Amazing Cultivation Simulator")[0].MainWindowHandle, MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 0, ty.X + (ty.Y << 16));

System.Threading.Thread.Sleep(500);
// System.Threading.Thread.Sleep(100);
// PostMessage(Process.GetProcessesByName("Amazing Cultivation Simulator")[0].MainWindowHandle , WM_LBUTTONDOWN, 0, ty.X + (ty.Y << 16));

// System.Threading.Thread.Sleep(1000);


mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, ty.X*65536/1920, ty.Y*65536/1080, 0, 0);

System.Threading.Thread.Sleep(100);

//System.Threading.Thread.Sleep(10);
// PostMessage(Process.GetProcessesByName("Amazing Cultivation Simulator")[0].MainWindowHandle, MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 0, ty.X + (ty.Y << 16));
mouse_event(MOUSEEVENTF_LEFTDOWN, ty.X * 65536 / 1920, ty.Y * 65536 / 1080, 0, 0);
if (dian.Length > 1)
{
for (int ui = 1; ui < dian.Length; ui++)
{
ty = pictureBox1.PointToScreen(did(dian[ui]));
// System.Threading.Thread.Sleep(10);
System.Threading.Thread.Sleep(100);
// PostMessage(Process.GetProcessesByName("Amazing Cultivation Simulator")[0].MainWindowHandle, MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 0, ty.X + (ty.Y << 16));

mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, ty.X * 65536 / 1920, ty.Y * 65536 / 1080, 0, 0);

}
}
//System.Threading.Thread.Sleep(10);
// WinIo.MyMouseUp(1);
System.Threading.Thread.Sleep(100);
// PostMessage(Process.GetProcessesByName("Amazing Cultivation Simulator")[0].MainWindowHandle, WM_LBUTTONUP, 0, ty.X + (ty.Y << 16));
mouse_event(MOUSEEVENTF_LEFTUP, ty.X * 65536 / 1920, ty.Y * 65536 / 1080, 0, 0); ;
}

代码就大概这样了....
...全文
766 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 ilikeff8 的回复:
直接用按键精灵不得了
有道理。。。
cheng2005 2019-01-25
  • 打赏
  • 举报
回复
为什么不用按键精灵?是因为游戏屏蔽了按键精灵吗?
ilikeff8 2019-01-25
  • 打赏
  • 举报
回复
直接用按键精灵不得了
橘子皮... 2019-01-23
  • 打赏
  • 举报
回复
mouse_event那行啊,这个太低级了

110,570

社区成员

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

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

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