[英]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.