我有一个简单的GUI应用程序,它需要在启动时执行某个功能,但不能从桌面或开始菜单手动启动。为了结合这个功能,我想到了为应用程序提供命令行参数,因此根据命令行参数,我们可以区分启动时启动和手动启动。
我的问题是,我如何确保每当用户点击桌面上的应用程序图标时,都会向程序提供所需的命令行参数。
我正在使用C#来编写我的应用程序,并希望在Windows 7上运行它
答案 0 :(得分:2)
可以在启动时(即自动)或手动(即,当用户启动应用程序时)启动的Windows应用程序的通用设计模式是在应用程序启动时传递命令行参数启动但不是用户手动启动时。为什么?因为您可以控制自动启动应用程序的机制(例如,因为您在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
中创建了注册表项)。因此,例如,您可以添加"c:\program files\MyCompany\MyApp.exe" /Startup
的值,然后您可以在代码中检查startup
参数:
bool isStartupLaunch;
foreach (string arg in args)
isStartupLaunch |= (arg.toLower() == "/startup");
相比之下,您实际上无法控制用户启动应用程序的方式。也许他们双击快捷方式,但也许他们双击你的实际可执行文件,或者他们打开命令提示符并以这种方式启动。因此,当用户启动您的应用时,您不希望依赖于获取特定的命令行参数。查找自动启动更安全,因为您可以控制如何完成,因此可以控制传入的命令行参数。