首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用win api模拟鼠标单击warcraft3按钮

使用win api模拟鼠标单击warcraft3按钮
EN

Stack Overflow用户
提问于 2012-07-24 18:38:21
回答 2查看 2.8K关注 0票数 3

我想知道是否有可能得到魔兽争霸3游戏的任何按钮?试图通过spy++和Control获得它,但是只有主WC3窗口是可用的。

有什么想法或建议吗?

我试着模拟点击按钮。我认为使用按钮的坐标可以做到这一点,但我不确定是否能够为所有屏幕分辨率计算这样的坐标。如果我在什么地方弄错了-请纠正我!

事先谢谢大家!

加法

WIN API

代码语言:javascript
复制
int x = 700;
int y = 70;
int lParam = ((x << 16) | (y & 0xffff));
int parentWindow = FindWindow("Warcraft III", "Warcraft III");
SendMessage(parentWindow, WM_LBUTTONDOWN, IntPtr.Zero, new IntPtr(lParam));
SendMessage(parentWindow, WM_LBUTTONUP, IntPtr.Zero, new IntPtr(lParam));  

这样的代码将按下任何按钮,在我离开魔兽争霸3窗口后一直处于活动状态。

直接输入

代码语言:javascript
复制
public void testMouse()
        {
            INPUT input_down = new INPUT();
            input_down.mi.dx = 700;
            input_down.mi.dy = 70;
            input_down.mi.mouseData = 0;
            input_down.mi.dwFlags = (int)MOUSEEVENTF.LEFTDOWN;

            INPUT input_up = input_down;
            input_up.mi.dwFlags = (int)MOUSEEVENTF.LEFTUP;

            INPUT[] input = { input_down, input_up };
            SendInput(2, input, Marshal.SizeOf(input_down));
        }

这样的代码一点也不起作用。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-26 15:12:54

使用spy++,我发现,当我们做一个普通的点击,魔兽争霸得到PostMessage()与MK_BUTTON作为wParam。因此,要模拟鼠标点击魔兽世界,您需要发送PostMessage()而不是SendMessage()。

以下是代码:

代码语言:javascript
复制
        IntPtr parentWindow = (IntPtr)WinApi.FindWindow("Warcraft III", "Warcraft III");
        int X = 770;
        int Y = 127;
        Point temp = new Point(X, Y);
        IntPtr lParam = (IntPtr)((temp.Y << 16) | temp.X);
        IntPtr wParam = IntPtr.Zero;
        WinApi.PostMessage(parentWindow, WM_LBUTTONDOWN, (IntPtr)MK_LBUTTON, lParam);
        WinApi.PostMessage(parentWindow, WM_LBUTTONUP, wParam, lParam);  

但是,按钮的所有屏幕分辨率的通用坐标仍然存在问题。

票数 3
EN

Stack Overflow用户

发布于 2012-07-24 18:40:56

我相信魔兽争霸III使用DirectX。因此,您应该寻找如何欺骗DirectX输入,而不是Win32 API。

相关问题:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11637208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档