我發展在.NET控制檯應用程序,我想改變一點基於該應用程序是從CMD.EXE或Explorer.exe的啓動信息的行爲。可能嗎?是否可以確定哪個進程啓動我的.Net應用程序?
8
A
回答
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;
3
的CreateToolhelp32Snapshot Function有Process32First方法,讓你閱讀PROCESSENTRY32 Structure。該結構有一個屬性,將讓你你想要的信息:
th32ParentProcessID - 標識符創建此 進程(父進程)的過程中 。
本文將幫助您在使用ToolHelpSnapshot功能上手:
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;
}
相關問題
- 1. 是否可以限制哪些程序可以啓動wpf應用程序?
- 2. 確定是否可以啓動應用程序中的特定活動
- 3. 確定哪個sidekiq進程屬於哪個應用程序
- 4. 可以在ASP.NET應用程序中啓動的進程數是否有限制?
- 5. 確定設備是否可以啓動Android電子市場應用程序
- 6. 是否CPU進程可以確定應用程序的速度潛力
- 7. 如何確定前臺應用程序是否是啓動器?
- 8. 以編程方式確定是否從命令行啓動AIR應用程序?
- 9. 是否可以從其他應用程序啓動應用程序
- 10. 是否可以從我的沙盒應用程序內啓動另一個應用程序?
- 11. Qt確定應用程序是否從Qt Creator啓動?
- 12. 確定iOS應用程序是否通過Siri啓動
- 13. 確定應用程序是否從AppleScript啓動
- 14. 確定是否由os在後臺啓動cordova應用程序
- 15. 確定應用程序是否從主屏幕啓動?
- 16. opos應用程序是否可以使用pos for .NET驅動程序
- 17. 是否可以確定應用程序的構建方式?
- 18. 如何確定Windows應用程序是否在Windows啓動時自動啓動?
- 19. 是否可以從Silverlight啓動客戶端應用程序?
- 20. 應用程序暫停時是否可以啓動上傳?
- 21. 是否可以啓動ARC應用程序最小化
- 22. Android:如何知道應用程序是否可以啓動
- 23. 是否可以從Adobe Air啓動本機應用程序?
- 24. 是否可以從網頁啓動Silverlight 4 OOB應用程序?
- 25. 是否可以在Azure lightswitch應用程序中啓動任務?
- 26. 是否可以根據位置啓動即時應用程序?
- 27. 是否可以爲整個應用程序啓用ToolTipService.ShowOnDisabled = true
- 28. 我可以從我的應用程序中啓動android應用程序嗎?
- 29. 以編程方式確定.NET WinForms應用程序是否通過調試器啓動
- 30. 我可以使用install4j啓動程序重新啓動Java應用程序嗎?
請檢查亞當Mitz在下面評論。由於簡單,我仍然發現這個答案是最好的。但有人應該關心。 – 2008-09-10 10:01:42