2008-09-10 49 views

回答

9
Process this_process = Process.GetCurrentProcess(); 
int parent_pid = 0; 
using (ManagementObject MgmtObj = new ManagementObject("win32_process.handle='" + this_process.Id.ToString() + "'")) 
{ 
    MgmtObj.Get(); 
    parent_pid = Convert.ToInt32(MgmtObj["ParentProcessId"]); 
} 
string parent_process_name = Process.GetProcessById(parent_pid).ProcessName; 
+0

请检查亚当Mitz在下面评论。由于简单,我仍然发现这个答案是最好的。但有人应该关心。 – 2008-09-10 10:01:42

3

一个与TOOLHELP /的ManagementObject问题办法是,父进程可能已经退出。

的GetStartupInfo Win32函数(使用的PInvoke如果没有.NET当量)在包括窗口标题的结构填充。对于Win32控制台应用程序“app.exe”,从cmd启动时该标题字符串为“app”,从explorer(或VS调试器)启动时,该标题字符串为“c:\ full \ path \ to \ app.exe”。

当然这是一个劈(受试者在其它版本中,改变等)。

#define WIN32_LEAN_AND_MEAN 
#include <windows.h> 
int main() 
{ 
    STARTUPINFO si; 
    GetStartupInfo(&si); 
    MessageBox(NULL, si.lpTitle, NULL, MB_OK); 
    return 0; 
} 
相关问题