1
我知道这里有一些问题,但我有这种类方法发送击键到另一个进程,但它似乎部分工作。如果我发送@“mystring”的NSString,我会返回“mmmmmmmm”(即总是第一个字母乘以原始字符串的长度乘以长度)。这是我的代码,可以请别人告诉我我缺少的东西。顺便说一下,字符的NSLog显示缓冲区变量中正确的字符。 其他问题我已经看过 1. CGEventCreateKeyboardEvent and CGEventTapLocation 2:CGEventPostToPSN - How to send keys with different keyboard locales?如何发送击键到objective-c中的另一个进程
+(void)writeString:(NSString *)valueToSet withFlags:(int)flags intoProcess:(ProcessSerialNumberPtr) process
{
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStatePrivate);
CGEventRef keyEventDown = CGEventCreateKeyboardEvent(source, 1, true);
CGEventRef keyEventUp = CGEventCreateKeyboardEvent(source, 1, false);
CGEventSetFlags(keyEventDown,0);
CGEventSetFlags(keyEventUp,0);
UniChar buffer;
CFRelease(source);
for (int i = 0; i < [valueToSet length]; i++) {
buffer = [valueToSet characterAtIndex:i];
NSLog(@" %i place Character: %c",i,buffer);
CGEventKeyboardSetUnicodeString(keyEventDown, 1, &buffer);
CGEventKeyboardSetUnicodeString(keyEventUp, 1, &buffer);
CGEventSetFlags(keyEventDown,flags);
CGEventPostToPSN(process, keyEventDown);
[NSThread sleepForTimeInterval: 0.01];
CGEventSetFlags(keyEventUp,flags);
CGEventPostToPSN(process, keyEventUp);
[NSThread sleepForTimeInterval: 0.01];
}
CFRelease(keyEventUp);
CFRelease(keyEventDown);
}
不,在程序的任何部分都没有设置事件分接点。程序不是用来检查键击或事件,而只是将它们发送到PSN。 – AnonymousPlayer