1
我已經在計算器上搜索了很多關於這個話題。而我迄今發現的東西非常有用。但是現在,我得出了一個非常有趣的事實。CGKeyEvent粘貼有斷點的工作,但不能沒有
就我而言,我躲在通過NSApp hide:self
的應用程序,我再一個字符添加到剪貼板,然後嘗試輸入它通過CGEvents最前面的應用程序。我給這家代碼如下:
-(void)applicationDidHide:(NSNotification *)notification{
stringToInsert = @"©";
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];
NSArray *copiedObjects = [NSArray arrayWithObject:stringToInsert];
[pasteboard writeObjects:copiedObjects];
//Use CGEvents to "press" Cmd-V
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef pasteCommandDown = CGEventCreateKeyboardEvent(source, (CGKeyCode)9, YES);
CGEventSetFlags(pasteCommandDown, kCGEventFlagMaskCommand);
CGEventRef pasteCommandUp = CGEventCreateKeyboardEvent(source, (CGKeyCode)9, NO);
CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandDown);
CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandUp);
CFRelease(pasteCommandUp);
CFRelease(pasteCommandDown);
CFRelease(source);
}
我問題是,它不希望當我從在Xcode 運行它,而不 breaktpoints插入文本。如果他是不可行的東西,它會讓mac的特徵「plong」變得更加獨特。
但是如果我給方法本身設置了一個斷點,然後一行一行地跳轉,它奇怪地在瞬間插入它。
對不起,我英文不好和我也許壞的文本格式,因爲我是新來的計算器。
如果你能幫助,我將不勝感激!
謝謝!可悲的是,它不能直接解決問題,但很高興,它有助於確定問題。我指定了相當長的時間,還有一個0,所以它應該是一秒鐘。然後,我試了一下,發現,重點並沒有真正轉移到下一個窗口。我不知道爲什麼,因爲如前所述,如果我使用斷點,焦點會傳遞到底層窗口。我想知道,因爲當應用程序** didHide **時,整個代碼塊**被**調用**,所以焦點**應該已經改變**。那麼,如何讓焦點改變,然後**調用代碼塊?非常感謝! – JMoVS 2011-06-05 11:27:04