使用Windows命令行进行GUI操作

时间:2013-06-27 19:46:17

标签: c++ c parameters command-line-arguments

我正在开发通过GUI操作的软件,我的任务是编写函数以使其通过Windows命令行运行,我不知道如何通过int argc和{{1 }}。请有人请给我一个小例子。我是C的新手,所以这有点过头了。

它应该类似于“参数A”调用“功能1”,然后下一个参数可以是“参数B”,它调用“功能2”或“参数C”,调用“功能3”。

Parameter_1(Paramter_2 | Parameter_3)

2 个答案:

答案 0 :(得分:0)

要回答您的第一个问题,我建议您创建两个不同的应用程序,一个用于命令行,另一个用于GUI。两者之间的唯一区别是,一个是使用处理命令行输入的代码构建的,另一个是使用GUI接口的代码。这两个代码具有接口不可知的其余代码,这意味着无论接口如何,它都可以工作。

对于第二个问题,有很多教程用于命令行解析,like this one我花了十秒钟才找到。

答案 1 :(得分:0)

您需要遍历传递给main()的参数,并根据您找到的任何匹配调用函数。基本main()函数如下所示

int main(int argc, char *argv[])
{
    return 0;
}

argc是参数的数量,argv是包含单个参数的C样式字符串的char指针数组。以下基于C的示例可以帮助您入门。

(虽然您将问题标记为C和C ++,但您只在问题中提及C,因此这是我为示例选择的语言。)

#include <string.h>
#include <stdio.h>

void execA()
{
    // ... do something 
}

void execB()
{
    // ... do something 
}

void execC()
{
    // ... do something 
}

int main(int argc, char *argv[])
{
    for(int i = 1; i < argc; i++)
    {
        if(0 == _stricmp("paramaterA", argv[i]))
        {
            execA();
        }
        else if(0 == _stricmp("paramaterB", argv[i]))
        {
            execB();
        }
        else if(0 == _stricmp("paramaterC", argv[i]))
        {
            execC();
        }
        else
        {
            fprintf(stderr, "Unknown parameter: %s", argv[i]);
        }
    }

    return 0;
}