首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用SendMessage()发送鼠标动作

如何使用SendMessage()发送鼠标动作
EN

Stack Overflow用户
提问于 2015-03-05 18:43:37
回答 1查看 252关注 0票数 4

我正在尝试写一个简单的窗口窗体由按钮组成,其中一个按钮是发送鼠标点击到一个活动的应用程序,如记事本。因此,我将单击按钮,这些按钮会将鼠标事件发送到记事本或任何应用程序。

它只发送右键单击或单击,

我为dll定义编写了以下代码:

代码语言:javascript
运行
复制
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd,uint Msg, int wParam,int lParam);

[DllImport("user32.dll")]
public static extern int FindWindow(String lbClassName,     StringlbWindowName);

//对于事件

代码语言:javascript
运行
复制
private const uint WM_RBUTTONDOWN = 0x0204;
private const uint WM_RBUTTONUP = 0x0205;

//事件处理程序

代码语言:javascript
运行
复制
private void button6_Click(object sender, EventArgs e)
{
    int window = FindWindow(null, "Notepad");
    SendMessage(window, WM_RBUTTONDOWN, 0, 0);
    SendMessage(window, WM_RBUTTONUP, 0, 0);
}

这不管用!

我怎么知道是鼠标点击发送的?

为什么这不起作用呢?

EN

Stack Overflow用户

发布于 2015-03-05 19:01:06

首先,您需要更正您的DllImport签名...

代码语言:javascript
运行
复制
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

然后,您需要在FindWindow调用上设置一个断点,并检查它是否确实返回了一个包含窗口句柄值的IntPtr。

然后运行Spy++并检查记事本是否具有与调用返回的窗口句柄相同的实际窗口句柄。将Spy++设置为将所有消息记录到记事本,并查看它是否确实到达目标窗口。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28875918

复制
相关文章

相似问题

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