如果你想在自己的應用程序進行粘貼操作,那麼你可以使用響應鏈發送paste:
行動的第一個響應者:
[NSApp sendAction:@selector(paste:) to:nil from:self];
文檔說,當你通過nil
作爲to:
參數會發生什麼:
如果aTarget爲零,sharedApplication將查找可響應消息的對象 - 即實現與anAction匹配的方法的對象。它從關鍵窗口的第一響應者開始。
但是,如果你想在執行粘貼動作與另一應用程序,有做沒有真正的好辦法。你可以期望的最好是執行「假裝」 CMD - v操作,並希望這意味着在目標應用「貼」 ......
#import <Carbon/Carbon.h>
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef pasteCommandDown = CGEventCreateKeyboardEvent(source, kVK_ANSI_V, YES);
CGEventSetFlags(pasteCommandDown, kCGEventFlagMaskCommand);
CGEventRef pasteCommandUp = CGEventCreateKeyboardEvent(source, kVK_ANSI_V, NO);
CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandDown);
CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandUp);
CFRelease(pasteCommandUp);
CFRelease(pasteCommandDown);
CFRelease(source);
正如另一則留言中提到,這這是一個很好的方式來做到這一點。這有點不安全(你並不總是知道什麼cmd - v意味着),而且很危險。
我說的但帶有示例代碼所以+1我猜:) –
謝謝!完美的作品。在'Carbon.h'中是關鍵代碼,所以現在我可以交換* kVK_ANSI _... *和* kCGEventFlagMask ... *,所以每個按鍵都是可能的。 – Binarian