我试图写一个简单的窗体,包含按钮, 其中一个按钮是将鼠标点击发送到活动应用程序,如记事本。所以我将点击按钮,按钮会将鼠标事件发送到记事本或任何应用程序。
它只发送右键单击或单击,
我为dll定义编写了这段代码:
[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);
// for events
private const uint WM_RBUTTONDOWN = 0x0204;
private const uint WM_RBUTTONUP = 0x0205;
//事件处理程序
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);
}
这不起作用!!
如何知道发送的鼠标点击次数?
为什么这不起作用?
答案 0 :(得分:0)
首先,您需要更正DllImport签名...
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
然后你需要在FindWindow调用上设置一个断点并检查它确实返回一个包含窗口句柄值的IntPtr。
然后运行Spy ++并检查记事本是否与您的呼叫返回的实际窗口句柄相同。设置Spy ++将所有消息记录到记事本中,看它是否确实到达了目标窗口。