我怎样才能从代码模拟鼠标事件?

我想用Win32 API模拟鼠标事件; 我该怎么做?

我想要做的是在最基本的层面上模拟事件,系统只有事件types和坐标的级别,还没有计算出它必须把它传递给哪个窗口

我不知道这是如何工作的。 无论哪种方式,我都需要帮助。 我会不得不插手驾驶员?

为了明确我的要求,我不想针对任何窗口,我只想让系统认为鼠标被用户点击或移动。 我将在C编码

Solutions Collecting From Web of "我怎样才能从代码模拟鼠标事件?"

您正在寻找SendInput函数 ,通过指定与输入事件相对应的INPUT结构数组,您可以在代码中合成鼠标移动和按钮单击。

 UINT WINAPI SendInput( __in UINT nInputs, // number of structures in the pInputs array __in LPINPUT pInputs, // an array of INPUT structures, representing an event __in int cbSize // the size, in bytes, of an INPUT structure ); 

但请注意,此功能受用户界面权限隔离(UIPI)的限制 ,这意味着您的应用程序只允许将输入注入到以相同或较低完整性级别运行的应用程序。

使用mouse_event (winuser.h)。 下面的代码将移动鼠标,然后在新位置执行一次单击。 你可以用两行来做这个,但是这更详细。

请注意,X和Y用微米键指定,0到65535.然后将其映射到当前分辨率,即0,0将是左上角,65535,65535将是右下角。

 mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x, y, 0, 0); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);