【问题标题】:Display the message for wrong command line string in win32在 win32 中显示错误命令行字符串的消息
【发布时间】:2013-12-18 16:53:10
【问题描述】:

我有以下代码,它根据从命令行输入的命令行字符串调用两个不同的函数。我的应用程序名称是 minopc.exe

所以当用户在命令提示符下输入以下代码时

minopc.exe -regserver 

srv.GBRegisterServer is called .

当用户在命令提示符下输入以下代码时

minopc.exe -unregserver 

srv.GBUnRegisterServer is called .

代码是

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    TCHAR *cmd_line = GetCommandLine();
    TCHAR *token;
    if ( (token = strchr(cmd_line, L'-')) == NULL ) token = strchr(cmd_line, L'/');
    if (token)
    {
         token++;
         if ( !lstrcmpi(token, LPCSTR("regserver")) || !lstrcmpi(token, LPCSTR("r")) )
         {
              srv.GBRegisterServer(&guid, L"WesOPC", L"WesOPC Server", L"WesOPC.Sample.MinOPC", L"1.0");
              return 0;
         }
         if ( !lstrcmpi(token, LPCSTR("unregserver")) || !lstrcmpi(token, LPCSTR("u")) )
         {
               srv.GBUnregisterServer(&guid);
               return 0;
         }
    }

现在,如果用户在 minopc.exe -regserver 和 minopc.exe -unregserver 旁边输入其他内容,我想显示错误。但它接受其他命令,甚至在像 minopc.exe -a 等这样编写时运行程序。

【问题讨论】:

    标签: c shell winapi command-line command-line-arguments


    【解决方案1】:

    您不进行任何错误处理,因此接受任何其他参数。你要做的就是

    if ( lstrcmpi(token, LPCSTR("regserver")) || lstrcmpi(token, LPCSTR("r")) )
    {
        srv.GBRegisterServer(&guid, L"WesOPC", L"WesOPC Server", L"WesOPC.Sample.MinOPC", L"1.0");
        return 0;
    }
    else if ( lstrcmpi(token, LPCSTR("unregserver")) || lstrcmpi(token, LPCSTR("u")) )
    {
        srv.GBUnregisterServer(&guid);
        return 0;
    }
    else
    {
        fprintf(stderr, "Invalid argument\n");
        return 10;
    }
    

    【讨论】:

    • 你能给我一些关于命令行字符串错误处理的想法吗?以及如何在命令提示符中显示错误信息
    • 我想在相同的命令提示符中显示消息,从我们触发命令的地方,例如 minopc.exe -regserver 。
    • 什么是链接器设置?如果有类似CONSOLE 的内容,请使用fprintf(stderr...),因为那是正确的。如果它显示WINDOWS,即使您从命令提示符启动程序,您也没有控制台窗口。
    猜你喜欢
    • 2021-07-20
    • 2016-04-25
    • 2019-04-05
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多