我正在使用代码在 MacOS 上使用碳模拟“粘贴”到最前面的应用程序。现在,我需要对不在最前面的特定应用程序执行此操作。到目前为止,我使用 PostToPsn 使用此代码:
ProcessSerialNumber psn;
//Using 8844 for testing purposes (safari)
OSStatus err = GetProcessForPID(8844, &psn);
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef cmdDown = CGEventCreateKeyboardEvent(source,kVK_ANSI_V, YES);
CGEventSetFlags(cmdDown, kCGEventFlagMaskCommand);
CGEventRef cmdUp = CGEventCreateKeyboardEvent(source, kVK_ANSI_V, NO);
if(err == noErr){
CGEventPostToPSN(&psn, cmdDown);
CGEventPostToPSN(&psn, cmdUp);
CFRelease(cmdUp);
CFRelease(cmdDown);
CFRelease(source);
}
它只使用一个字母,但是当与命令组合时,它根本不起作用。