我有以下代码,它根据从命令行输入的命令行字符串调用两个不同的函数。我的应用程序名称是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等时运行程序。
答案 0 :(得分:0)
您不进行任何错误处理,接受任何其他参数。你要做的是
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;
}