我在StackOverflow上搜索了很多关于这个主题的内容。到目前为止我发现的东西很有用。但现在,我找到了一个非常有趣的事实。
就我而言,我通过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 没有断点时运行它时不想插入文本。如果他的操作系统无法使用,那么它就会使得mac的特征变得“特别”。
但是 if 我为方法本身设置了一个断点,然后逐行跳转,好奇地在瞬间插入它。
抱歉我的英文不好以及我的文本格式可能不好,因为我是stackoverflow的新手。
如果你能提供帮助,我真的很感激!
答案 0 :(得分:2)
我以前见过这个,我的猜测是事件发布得太快,系统无法处理(因为它实际上只需要处理不超过20个关键事件)。我猜想像usleep(100000)
这样的东西(将线程暂停1/10秒)会有很大的帮助。