如果你想在自己的应用程序进行粘贴操作,那么你可以使用响应链发送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