zl程序教程

您现在的位置是:首页 >  其它

当前栏目

MFC调用CMD控制台

调用 cmd mfc 控制台
2023-09-27 14:28:41 时间

 

    BOOL b=AllocConsole();//创建控制台
    //一个进程只能创建一个console,多次调用会返回FALSE;而且,这个窗口是个独立的控制台窗口
    //返回值:如果函数成功,则返回值为非零值.如果该函数失败,则返回值为零

    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);//获得控制台输出句柄
    //看:https://www.cnblogs.com/liming19680104/p/17002845.html 

    TCHAR ch[] = _T("我是中国人");
    int len = lstrlen(ch);

    BOOL b1 = WriteConsole(hStdout, ch, len, NULL, NULL);//在控制台输出
    //看:https://www.cnblogs.com/liming19680104/p/17002845.html 


    CloseHandle(hStdout); //释放输出句柄


    TCHAR Buffer[100];         //开缓存
    memset(Buffer, 0, 100);
    DWORD dwCount = 0;        //已输入数
    
    HANDLE hdlRead = GetStdHandle(STD_INPUT_HANDLE);    //获得控制台输入句柄
    ReadConsole(hdlRead, Buffer, 100, &dwCount, NULL);  //从控制台输入缓冲区读取字符输入,并将其从缓冲区中删除
    //参数1:控制台输入缓冲区的句柄
    //参数2:指向接收从控制台输入缓冲区读取数据的缓冲区的指针
    //参数3:要读取的字符数。 lpBuffer 参数指向的缓冲区的大小应至少nNumberOfCharsToRead * sizeof(TCHAR)为字节
    //参数4:要读取的字符数,第四个参数必须指定,否则会无法读取
    //参数5:指向 CONSOLE_READCONSOLE_CONTROL 结构的指针,该结构指定要向读取操作末尾发出信号的控制字符。 此参数可以为 NULL
    //        此参数默认需要 Unicode 输入。 对于 ANSI 模式,请将此参数设置为 NULL
    //返回值:如果该函数成功,则返回值为非零值。    如果函数失败,则返回值为零
    
    AfxMessageBox(Buffer);

    CloseHandle(hdlRead);  //释放输入句柄

    //BOOL b=::FreeConsole();//关闭控制台
    //执行这条指令时会中断,不知道什么原因,请知道的告诉我一下,请底部留言