我发展在.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