여기에 대해 몇 가지 질문이 있지만이 클래스 메서드를 사용하여 다른 프로세스에 키 입력을 보낼 수 있지만 부분적으로 작동하는 것으로 보입니다. @ "mystring"의 NSString을 보내면 "mmmmmmmm"이 반환됩니다 (즉, 항상 원래 문자열의 길이 곱한 첫 글자). 여기에 내 코드가있다. 누군가 내가 무엇을 놓치고 있는지 말해 줄 수있다. 그건 그렇고 NSLog 문자의 버퍼 변수에 올바른 문자를 보여줍니다. 당신은 이벤트 탭이 동일한 스레드에서, 코드에서 다른 곳으로 설정해야합니까 다른 질문은 내가 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