2012-03-11 55 views
2

我想製作一個簡單的程序,將隨機的按鍵發送到我的其他應用程序(一個簡單的文本編輯器)。目的是通過隨機提供字母或大量準備好的文本來壓力測試其他應用程序。在OS X中模擬擊鍵測試?

我需要的是一種方法,一個字符轉換在一個NSString的鍵碼,所以我可以將它傳遞給OS這樣的:

CGKeyCode code = [self convertLetter:myOneCharNSString]; 
CGEventRef e = CGEventCreateKeyboardEvent (NULL, code, true); 
CGEventPost(kCGSessionEventTap, e); 
CFRelease(e); 

任何線索?

回答

3

這將這樣的伎倆:

-(void) fakeAnUnicharWithString : (NSString*) characters 
{ 
    CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState); 
    CGEventRef keyEventDown = CGEventCreateKeyboardEvent(eventSource, 0, true); 
    UniChar buffer; 
    for (int i = 0; i < [characters length]; i++) { 
     [characters getCharacters:&buffer range:NSMakeRange(i, 1)]; 
     keyEventDown = CGEventCreateKeyboardEvent(eventSource, 1, true); 
     CGEventKeyboardSetUnicodeString(keyEventDown, 1, &buffer); 
     CGEventPost(kCGHIDEventTap, keyEventDown); 
     CFRelease(keyEventDown); 
    } 
    CFRelease(eventSource); 
} 
1

我最終修改了Shortcut Recorder項目的部分內容(http://code.google.com/p/shortcutrecorder/)。這有點棘手,但最終我勝利了。太糟糕了,壓力測試沒有擺脫我所希望的錯誤,但至少現在我有工具供將來參考。

+0

......最終事實證明,代碼不正確轉換信件掃描碼,至少不是在正常的A-Z A-Z範圍最字母。回到正方形。 – 2012-03-18 16:26:15