模拟左键单击,光标位置和计时

时间:2014-04-15 21:48:49

标签: c# mouseevent sendmessage

我正在构建一个使用mouse_event模拟左键点击的.Net 4.0应用程序(使用Winforms)(我知道{@ 1}}已被弃用,但是当我使用mouse_event时会出现此问题,同样)。

结合模拟的左键单击,我还在应用程序中设置了光标位置(我已尝试SendMessage ...,以及Cursor.Position)。

问题在于时机。我将调用设置光标位置,稍后在代码中,我调用左键单击。但通常情况下,这些操作的顺序会发生故障(左键单击会在导航之前发生)。我试图通过插入各种暂停(SetCursorPosition(),在System.Threading.Thread.Sleep()对象中包装动作等)来纠正这个问题。
这些解决方案都不起作用,我确信我对Windows消息传递如何工作缺乏了解正在这个问题中发挥作用。

所以,我的伪代码看起来像这样:

Task

在上面的示例中,事件将不按顺序发生,其中2个导航调用首先发生,然后发生2 navigate(x_pos, y_pos); leftClick(); ///using mouse_event() navigate(x_pos2, y_pos2); leftClick(); 次调用。

对于mouse_event(leftClick),我基本上使用:

leftClick()

...然后我使用0x02(鼠标向下)和0x04(鼠标向上)调用来模拟左键单击用于设置光标位置,我尝试了WinAPI调用,以及简单地使用

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = StdCall)] 
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); 

0 个答案:

没有答案