Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;,windows-处理命令行参数后重置这些参数_C++_Windows_Mfc_Command Line Arguments - Fatal编程技术网

C++ c++;,windows-处理命令行参数后重置这些参数

C++ c++;,windows-处理命令行参数后重置这些参数,c++,windows,mfc,command-line-arguments,C++,Windows,Mfc,Command Line Arguments,我有一个Win32应用程序,它有一个对话框,只有当进程是重新启动的进程时,它才能执行某些操作。大纲如下: #define CMDLINE_RESTART_PROCESS "--Restart" BOOL CheckForProcessRestart() { LPTSTR szCmdLine = ::GetCommandLine() return ::StrStr(szCmdLine, CMDLINE_RESTART_PROCESS) != NULL; } BOOL CMyDi

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

我的问题是,在处理命令行参数后,有没有办法重置这些参数


谢谢

只需使用一个标志,在第一次重新启动时将其设置为
true
,然后在它为
true
时不检查并重新启动,就我所知,没有办法做到这一点。你最好的办法是制作一份副本,并经常检查该副本。然后,您可以随意修改该副本。

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

等等,是否使用命令行参数从另一个程序集打开对话框?或者主窗口和对话框之间是否共享命令行参数?如果是第一个参数,则不需要重置参数;如果是第二个参数,则不应使用命令行参数。虽然我觉得我可能误解了你的问题。@Antonijn,不,不。我有一个应用程序,它做一些事情,然后重新启动。重新启动后,此对话框将执行一些特殊操作。就是这样。等等,您是否使用命令行参数从另一个程序集打开对话框?或者主窗口和对话框之间是否共享命令行参数?如果是第一个参数,则不需要重置参数;如果是第二个参数,则不应使用命令行参数。虽然我觉得我可能误解了你的问题。@Antonijn,不,不。我有一个应用程序,它做一些事情,然后重新启动。重新启动后,此对话框将执行一些特殊操作。就这样。谢谢你的回答!我宁愿不使用额外的变量。我只是想知道是否有办法重置调用进程的命令行参数。谢谢你的回答!我宁愿不使用额外的变量。我只是想知道是否有办法真正重置调用进程的命令行参数。谢谢你的回答!老实说,我认为应该有一种方法让调用进程能够设置/重置自己的命令行参数,而不必克隆自己并退出。我认为这种行为是完全合理的,因为数据来自外部。你不能回到过去,改变你被呼叫的方式,那么为什么系统应该允许你做你能做的事情呢?从这个角度来看,这是有道理的。但我在想,因为每个命令行只与该流程相关,而且该流程本身就知道如何处理这些参数,所以它应该能够通过一些限制来修改这些参数。不过这只是我的拙见。不管怎样,我就是这么做的。谢谢你的回答!谢谢你的回答!老实说,我认为应该有一种方法让调用进程能够设置/重置自己的命令行参数,而不必克隆自己并退出。我认为这种行为是完全合理的,因为数据来自外部。你不能回到过去,改变你被呼叫的方式,那么为什么系统应该允许你做你能做的事情呢?从这个角度来看,这是有道理的。但我在想,因为每个命令行只与该流程相关,而且该流程本身就知道如何处理这些参数,所以它应该能够通过一些限制来修改这些参数。不过这只是我的拙见。不管怎样,我就是这么做的。谢谢你的回答!