我想啓動一個具有指定應用程序的文件,並且我希望啓動的程序立即成爲最前面的窗口。獲取最近啓動的應用程序的PID的最簡單方法
我知道我能做到這一點,如下所示:
[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName];
然後,如果我可以得到啓動的應用程序的PID,然後我就可以做到這一點,使該應用程序最前面:
NSRunningApplication* app = [NSRunningApplication
runningApplicationWithProcessIdentifier: PID];
[app activateWithOptions: NSApplicationActivateAllWindows];
我有這樣的問題:什麼是最簡單,最快和最可靠的方式來獲得此應用程序的PID啓動後立即,所以我可以確保這個應用程序是最前面的?
這並不像第一眼那樣直截了當。例如,我需要一個進程名稱才能使用Carbon調用獲取PID,或通過可通過NSRunningApplication
訪問的應用程序字典。但是,在一般情況下,我並不總是知道進程名是什麼,在某些情況下,進程名是一個空字符串。
此外,我可能已經運行了該應用程序的其他實例,並且我總是要獲取剛啓動的應用程序的特定實例的PID。
任何人都可以提出一個確定的,百分之百可靠的方法來獲取當前啓動的應用程序的PID?
或者,有沒有辦法用指定的應用程序啓動給定的文件,這樣應用程序總是以最前面的應用程序打開?
我現在意識到,爲了使我的應用程序最前面的一個更可靠的方法是通過'SetFrontProcess(PSN)',其中 「PSN」 是的'ProcessSerialNumber'推出的應用程序。但我仍然有同樣的問題,因爲我需要一個進程名來檢索應用程序的'ProcessSerialNumber',並且存在與上面描述的有關如何獲取應用程序的PID相同的競爭條件。 – HippoMan 2012-03-11 19:31:00