我正在尝试写一个简单的窗口窗体由按钮组成,其中一个按钮是发送鼠标点击到一个活动的应用程序,如记事本。因此,我将单击按钮,这些按钮会将鼠标事件发送到记事本或任何应用程序。
它只发送右键单击或单击,
我为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);//对于事件
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);
}这不管用!
我怎么知道是鼠标点击发送的?
为什么这不起作用呢?
发布于 2015-03-05 19:01:06
首先,您需要更正您的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++设置为将所有消息记录到记事本,并查看它是否确实到达目标窗口。
https://stackoverflow.com/questions/28875918
复制相似问题