c ++, windows — сбросить параметры командной строки после их обработки

У меня есть приложение 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() получит исходные параметры командной строки.

У меня вопрос, есть ли способ сбросить параметры командной строки после их обработки?

Спасибо!

1

Решение

Насколько я знаю, нет способа сделать это. Лучше всего сделать копию и всегда проверять эту копию. Эту копию вы можете затем изменить, как вам нравится.

3

Другие решения

Просто используйте флаг, установите его true сначала перезагрузите, а затем не проверяйте и не перезапускайте, пока true,

2