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