我有一个Win32应用程序,它有一个对话框,仅当进程是重新启动的进程时才会执行某些操作。大纲如下:
#define CMDLINE_RESTART_PROCESS "--Restart"
BOOL CheckForProcessRestart()
{
LPTSTR szCmdLine = ::GetCommandLine()
return ::StrStr(szCmdLine, CMDLINE_RESTART_PROCESS) != NULL;
}
BOOL CMyDialog::InitInstance()
{
if(CheckForProcessRestart())
{
// Do something (like initialize certain variables, controls, etc)
}
// Rest of application
}
在我检测到该进程是重新启动的进程并初始化这些控件和变量后,我的对话框将执行其操作并关闭。
此对话框可通过主窗口中的菜单访问。单击该菜单按钮,当弹出此对话框时,它将再次检测到它是重新启动的进程,因为GetCommandLine()
将获取原始命令行参数。
我的问题是,在处理命令行参数后,有什么办法可以重置命令行参数吗?
谢谢!
答案 0 :(得分:3)
据我所知,没有办法做到这一点。您最好的选择是制作副本并始终检查该副本。然后您可以根据需要修改该副本。
答案 1 :(得分:2)
只需使用标记,首次重启时设置为true
,然后在true
时不检查并重新启动。