2013-10-10 39 views
0

我想在finder中模擬「cmd + k」keystorke,以便它可以打開「連接到服務器窗口」。但它不起作用。我是新客觀的C,所以任何人都可以幫助我。我嘗試了下面的代碼,但不知道爲什麼它不起作用。模擬組合鍵擊不工作?

CGEventSourceRef src = 
CGEventSourceCreate(kCGEventSourceStateHIDSystemState); 

CGEventRef cmdd = CGEventCreateKeyboardEvent(src, 0x37, true); 
CGEventRef cmdu = CGEventCreateKeyboardEvent(src, 0x37, false); 
CGEventRef k_d = CGEventCreateKeyboardEvent(src, 0x4F, true); 
CGEventRef k_u = CGEventCreateKeyboardEvent(src, 0x4F, false); 

CGEventSetFlags(k_d, kCGEventFlagMaskCommand); 
CGEventSetFlags(k_u, kCGEventFlagMaskCommand); 

CGEventTapLocation loc = kCGHIDEventTap; // kCGSessionEventTap also works 
CGEventPost(loc, cmdd); 
CGEventPost(loc, k_d); 
CGEventPost(loc, k_u); 
CGEventPost(loc, cmdu); 

CFRelease(cmdd); 
CFRelease(cmdu); 
CFRelease(k_d); 
CFRelease(k_u); 
CFRelease(src); 

在此先感謝...

回答

1

首先,我已經寫了小蘋果腳本,然後調用相同的內部可可,請嘗試以下: -

NSBundle *def=[NSBundle mainBundle]; 
NSString *path=[def pathForResource:@"openServer" ofType:@"scpt"]; 
NSAppleScript *appleScript=[[NSAppleScript alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; 
[appleScript executeAndReturnError:nil]; 

下面是AppleScript的文件,其name is openServer.scpt

tell application "Finder" 
    activate 
    tell application "System Events" 
     keystroke "k" using command down 
    end tell 
end tell