Я пытаюсь получить доступ к процессу, чтобы позже отправить ключ с помощью CGEventPostToPSN. Но моя проблема в том, что я не могу запустить процесс. Я использую следующий код:
pid_t pid = GetPIDForProcessName("myprocess");
NSLog(@"PID: %d", pid);
ProcessSerialNumber psn = { 0, pid };
OSStatus status = GetProcessForPID(pid, &psn);
if (status != noErr) {
NSLog(@"OSStatus KO PID: %d %d %d", status, noErr, pid);
}else{
NSLog(@"OSStatus OK PID: %d %d %d", status, noErr, pid);
CGEventRef keyDown;
keyDown = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)0, TRUE);
CGEventRef keyUp;
keyUp = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)0, FALSE);
CGEventPostToPSN(&psn, keyDown);
CFRelease(keyDown);
CGEventPostToPSN(&psn, keyUp);
CFRelease(keyUp);
}
Я использую класс "GetPID.h", чтобы получить PID как целое число, и это, кажется, работает правильно. Но я получаю ошибку 600 «Нет допустимого процесса с указанным серийным номером процесса» в статусе GetPIDForProcessName.
Я протестировал некоторые процессы, и этот код работает, но не работает с другими. У меня нет очень четкой разницы между процессами, может быть
Большое спасибо за любые предложения.