我正在爲iPhone平臺開發某種空中鼠標應用程序。這個應用程序連接到一個在Mac OS X上生成鼠標事件的計算機服務。我使用CGEventCreateMouseEvent()和CGEventPost()生成了這個事件。但是我遇到了一個問題。假設您正在使用Safari,然後點擊免費桌面空間。如果您使用普通鼠標進行此操作,它將隱藏Safari的頂部菜單欄並顯示Finder菜單欄。但在這些合成事件中,它並不是那樣。我是否必須發佈其他事件或設置其他屬性?合成點擊不會切換應用程序的菜單欄(Mac OS X)
這裏是我的鼠標了代碼,按下鼠標:
- (void)mouseUp:(int)button {
int type = (button == LEFT_BUTTON) ? kCGEventLeftMouseUp : kCGEventRightMouseUp;
int mouseButton = (button == LEFT_BUTTON) ? kCGMouseButtonLeft : kCGMouseButtonRight;
leftMouseDown = (button == LEFT_BUTTON) ? NO : leftMouseDown;
rightMouseDown = (button == RIGHT_BUTTON) ? NO : rightMouseDown;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef event = CGEventCreateMouseEvent (source, type, CGSCurrentInputPointerPosition(), mouseButton);
CGEventSetType(event, type);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
}
- (void)mouseDown:(int)button {
int type = (button == LEFT_BUTTON) ? kCGEventLeftMouseDown : kCGEventRightMouseDown;
int mouseButton = (button == LEFT_BUTTON) ? kCGMouseButtonLeft : kCGMouseButtonRight;
leftMouseDown = (button == LEFT_BUTTON) ? YES : leftMouseDown;
rightMouseDown = (button == RIGHT_BUTTON) ? YES : rightMouseDown;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef event = CGEventCreateMouseEvent (source, type, CGSCurrentInputPointerPosition(), mouseButton);
CGEventSetType(event, type);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
}
謝謝。除第一次嘗試更改活動應用程序外,它正在工作。有什麼建議麼? – Rok 2010-05-11 10:19:14
可能以1的EventNumber開始? – nob 2010-05-12 12:26:19
不,仍然無法正常工作。 – Rok 2010-05-20 09:40:37