c ++,windows - 处理它们后重置命令行参数

时间:2013-03-04 07:23:37

标签: c++ windows mfc command-line-parsing

我有一个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()将获取原始命令行参数。

我的问题是,在处理命令行参数后,有什么办法可以重置命令行参数吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

据我所知,没有办法做到这一点。您最好的选择是制作副本并始终检查该副本。然后您可以根据需要修改该副本。

答案 1 :(得分:2)

只需使用标记,首次重启时设置为true,然后在true时不检查并重新启动。