簡體   English   中英

模擬MouseEvent無法正常運行OSX

[英]Simulated MouseEvent not working properly OSX

回到2010年, 皮埃爾問了這個問題(他接受的答案對我不起作用)。

我遇到了同樣的問題:我能夠以編程方式從我的Cocoa應用程序中成功移動鼠標(並關閉!?!),但是將鼠標移到我的Dock的位置並沒有顯示它(和一些其他應用程序沒有注冊鼠標移動事件,例如刪除鼠標的游戲)

我使用的方法是:

void PostMouseEvent(CGMouseButton button, CGEventType type, const CGPoint point)
{
  CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, point, button);
  CGEventSetType(theEvent, type);
  CGEventPost(kCGSessionEventTap, theEvent);
  CFRelease(theEvent);
}

然后,當我想移動鼠標時,我運行:

PostMouseEvent(0, kCGEventMouseMoved, mouseLocation);

請注意,此代碼會為鏈接等事件生成鼠標懸停事件。

現在是2013年,是否有可能解決這個問題?

謝謝你的時間!

我會扭曲光標並生成鼠標移動事件。 我從經驗中知道,例如,扭曲光標,雖然它本身不生成事件,但修改后續鼠標移動事件以包括其鼠標增量中的移動距離。 我不知道你的合成移動事件是否會包含適當的delta值。

好吧,顯然MacOSX需要將鼠標放在屏幕的邊緣才能顯示底座! 因為我將我的底座放在屏幕的左側(由於許多程序將重要按鈕保持在窗口的底部),我所要做的只是說

if (mouseLocation.x < 0)
{
    mouseLocation.x = 0;
}

它奏效了!

我也使用KenThomases的想法來扭曲光標。

(這個答案標記正確,因為它允許我顯示停靠 - 但仍然有一些應用程序沒有響應鼠標輸入)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM