我想訪問一個進程以後用CGEventPostToPSN發送密鑰。但我的問題是我無法獲得運行過程。我使用下面的代碼:GetProcessForPID錯誤-600與一些進程
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爲整數,這似乎正常工作。但是在GetPIDForProcessName狀態中,我收到錯誤600「沒有指定進程序列號的合格進程」。
我測試了一些過程,並且此代碼可以正常工作,但不能與其他人一起工作。我沒有非常明顯的區別,進程可以是
非常感謝您的任何建議。
...如果你有它的副本。它不再是在線可用的。 (它的URL *是*:http://developer.apple.com/library/mac/qa/qa2001/qa1123.html) –
@PeterHosey:我明白了,你是對的。如果我在Xcode 3.2.6中搜索文檔,我會在10.6核心庫中找到它,但是如果我在Xcode 4.2中搜索文檔,它不在那裏。 – JWWalker
好的。謝謝。可能是我的選擇不是正確的方式然後 –