精华内容
下载资源
问答
  • 本人做的是一个图形界面的编译器,美其名曰IDE吧。 做到最后一步的时候,发现如何解释中间代码成了一个大问题!我有如下几种方案: 1,在IDE中调用解释程序,对中间代码进行解释执行。 2,通过自己的代码来模拟一...
    本人做的是一个图形界面的编译器,美其名曰IDE吧。
          做到最后一步的时候,发现如何解释中间代码成了一个大问题!我有如下几种方案:
                       1,在IDE中调用解释程序,对中间代码进行解释执行。
                       2,通过自己的代码来模拟一个命令行。
                       3,让解释程序在后台运行,将输入输出重定向到自己的某个控件(如textBox等)

          客观来讲:
          第1种方案的好处是简单,大部分工作是命令行帮你做了,但是缺点是:IDE里突然弹出一个命令行程序,怎么看都别扭,不是主流的IDE所为;而且,若将这种成果交给老师的话,估计老师会怀疑这个命令行程序是你本人做的。
          第2种方案的好处是一切都在控制之中,不过要模拟一个命令行,你可以到微软当技术骨干了!
          第3种方案的好处是自然,一切都在IDE中进行;其实不然,需要后台程序支持,最起码要一个命令行程序支持。而且对于系统编程不是很熟悉的朋友,这个在技术上对程序员有很高的要求。

          至于我嘛,由于时间有限,只能选在第1种方案啦,其实我很喜欢第3种方案的,但是它设计到很多系统编程的知识,而我虽然学过,但现在对什么管道操作也不是很熟练了,哎,只能留待以后来实现了。

          下面是我从网上转载的一篇文章,是对第3种方案的证明。希望对这方面感兴趣的朋友有所帮助。如果有朋友写了这方面的程序,我们不妨交流交流,共同进步。
     


    编写自己的"IDE"

      -- 如何在图形界面中实时捕获控制台程序的标准输出.

      IDE是集成开发环境(Integrated Development Environment)的简称。印象里有很多出色的IDE,比如JBuilder和Kylix,比如Visual Studio。不知大家是否留意过,大多数IDE本身只提供代码编辑、工程管理等人机交互功能,我们在IDE中编译代码、调试程序时,IDE需要调用命令行的编译器、调试器完成相应的操作。例如,使用Visual Studio编译C++程序时,我们会在IDE下方的Output窗口中看到编译和连接的全过程,虽然我们看不到弹出的DOS窗口,但实际上是IDE先后启动了Microsoft C++编译器cl.exe和连接器link.exe这两个命令行程序,而cl.exe和link.exe的输出又实时反映到了IDE的Output窗口中。还有,我们可以在Visual Studio中配置自己需要的工具程序(比如特殊的编译器),然后让Visual Studio在适当的时候运行这些工具,并将工具程序的输出实时显示到Output窗口中。下图是我在Visual Studio 6.0的Output窗口中运行J2SDK的javac.exe编译java源程序并显示程序中语法错误的情形:

    图片点击可在新窗口打开查看

      也就是说,大多数IDE工具都可以在集成环境中调用特定的命令行程序(WIN32里更确切的说法是控制台程序),然后实时捕获它们的输出(这多半是输出到标准的stdout和stderr流里的东西),并将捕获到的信息显示在图形界面的窗口中。

      这显然是一种具备潜在价值的功能。利用这一技术,我们至少可以

      1. 编写出自己的IDE,如果我们有足够的耐心的话;

      2. 在我们自己的应用程序里嵌入全文检索功能(调用Borland C++里的grep.exe工具),或者压缩和解压缩功能(调用控制台方式的压缩解压程序,比如arj.exe、pkzip.exe等);

    3. 连接其他人编写的,或者我们自己很久以前编写的控制台程序——我经常因为难以调用一个功能强大但又没有源码的控制台程序而苦恼万分。

      这样好的功能是如何实现的呢?

      首先,如果我们想做的是用一个控制台程序调用另一个控制台程序,那就再简单不过了。我们只消把父进程的stdout重定向到某个匿名管道的 WRITE端,然后启动子进程,这时,子进程的stdout因为继承的关系也连在了管道的WRITE端,子进程的所有标准输出都写入了管道,父进程则在管道的另一端随时“侦听”——这一技术叫做输入输出的重定向。

      可现在的问题是,GUI方式的Windows程序根本没有控制台,没有stdin、stdout之类的东西,子进程又是别人写好的东西无法更改,这重定向该从何谈起呢?

      还有另外一招:我们可以直接在调用子进程时用命令行中的管道指令“>”将子进程的标准输出重定向到一个文件,子进程运行完毕后再去读取文件内容。这种方法当然可行,但它的问题是,我们很难实时监控子进程的输出,如果子进程不是随时刷新stdout的话,那我们只能等一整块数据实际写入文件之后才能看到运行结果;况且,访问磁盘文件的开销也远比内存中的管道操作来得大。

      我这里给出的方案其实很简单:既然控制台程序可以调用另一个控制台程序并完成输入输出的重定向,那我们完全可以编写一个中介程序,这个中介程序调用我们需要调用的工具程序并随时获取该程序的输出信息,然后直接将信息用约定的进程间通讯方式(比如匿名管道)传回GUI程序,就象下图中这样:

    图片点击可在新窗口打开查看

      图中,工具程序和中介程序都是以隐藏的方式运行的。工具程序原本输出到stdout的信息被重定向到中介程序开辟的管道中,中介程序再利用 GUI程序创建的管道将信息即时传递到GUI程序的一个后台线程里,后台线程负责刷新GUI程序的用户界面(使用后台线程的原因是,只有这样才可以保证信息在GUI界面中随时输出时不影响用户正在进行的其他操作,就象我们在Visual Studio中执行耗时较长的编译功能那样)。

    我写的中介程序名字叫wSpawn,这个名字来自Visual Studio里完成类似功能的中介程序VcSpawn(你可以在Visual Studio的安装目录中找到它)。我的wSpawn非常简单,它利用系统调用_popen()同时完成创建子进程和输入输出重定向两件工作。GUI程序则使用一种特殊的命令行方式调用wSpawn:

      wspawn –h <n> <command> [arg1] [arg2] ...

      其中,-h后跟的是GUI程序提供的管道句柄,由GUI程序自动将其转换为十进制数字,wSpawn运行时将信息写入该句柄中,随后的内容是GUI程序真正要执行的命令行,例如调用C++编译器cl.exe的方式大致如下:

    wspawn –h 1903 cl /Id:/myInclude Test.cpp

      wspawn.cpp的程序清单如下:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <string>
    #include <windows.h>
    using namespace std;
    void exit_friendly(void)
    {
      puts("请不要单独运行wSpawn.");
      exit(0);
    }
    int main( int argc, char *argv[] )
    {
      HANDLE hWrite = NULL;
      DWORD  dwWrited;
      int   i = 0, ret = 0, len = 0;
      char  psBuffer[256];
      FILE*  child_output;
      string command_line = "";
      // 检查命令行,如存在管道句柄,则将其转换为HANDLE类型
      if (argc < 2)
        exit_friendly();
      if (!stricmp(argv[1], "-h"))
      {
        if (argc < 4)
          exit_friendly();
        hWrite = (HANDLE)atoi(argv[2]);
        i = 3;
      }
      else
        i = 1;
      // 提取要执行的命令
      for (; i < argc; i++)
      {
        command_line += argv[i];
        command_line += " ";
      }
      // 使用_popen创建子进程并重定向其标准输出到文件指针中
      if( (child_output = _popen( command_line.c_str(), "rt" )) == NULL )
        exit( 1 );
      while( !feof( child_output ) )
      {
        if( fgets( psBuffer, 255, child_output ) != NULL )
        {
          if (hWrite)
          {
            // 将子进程的标准输出写入管道,提供给自己的父进程
            // 格式是先写数据块长度(0表示结束),再写数据块内容
            len = strlen(psBuffer);
            WriteFile(hWrite, &len, sizeof(int), &dwWrited, NULL);
            WriteFile(hWrite, psBuffer, len, &dwWrited, NULL);
          }
          else
            // 如命令行未提供管道句柄,则直接打印输出
            printf(psBuffer);
        }
      }
       // 写“0”表示所有数据都已写完
      len = 0;
      if (hWrite)
        WriteFile(hWrite, &len, sizeof(int), &dwWrited, NULL);
       return _pclose( child_output );
    }

      下面,我们就利用wSpawn程序,写一个简单的“IDE”工具。我们选择Visual Studio 6.0作为开发环境(本文给出的代码也在Visual Studio.NET 7.0中做过测试)。首先,创建Visual C++工程myIDE,工程类型为MFC AppWizard(EXE)中的Dialog based类型,即创建了一个主窗口为对话框的GUI程序。工程myIDE的主对话框类是CMyIDEDlg。现在我们要在资源编辑器中为主对话框添加一个足够大的多行编辑框(Edit Box),它的控制ID是IDC_EDIT1,必须为IDC_EDIT1设置以下属性:

     Multiline, Horizontal scroll, Auto HScroll, Vertical scroll, Auto VScroll, Want return

      然后用ClassWizard为IDC_EDIT1添加一个对应的成员变量(注意变量的类型要选CEdit型而非字符串CString型)

    CEdit m_edit1;

      使用ClassWizard为“确定”按钮添加消息响应方法OnOK(),编辑该方法:

    void CMyIDEDlg::OnOK()
    {
      AfxBeginThread(myThread, this);
      InvalidateRect(NULL);
      UpdateWindow();
    }

      也就是说,我们在“确定”按钮按下时,启动了后台线程myThread(),那么,myThread()到底做了些什么呢?我们先在CMyIDEDlg类的头文件myIDEDlg.h中加上一个成员函数声明:

    protected:
      static UINT myThread(LPVOID pParam);

      然后,在CMyIDEDlg类的实现文件myIDEDlg.cpp里添加myThread()的实现代码:

    UINT CMyIDEDlg::myThread(LPVOID pParam)
    {
      PROCESS_INFORMATION pi;
      STARTUPINFO siStartInfo;
      SECURITY_ATTRIBUTES saAttr;
      CString Output, tmp;
      char command_line[200];
      DWORD dwRead;
      char* buf; int len;
      HANDLE hRead, hWrite;
      CMyIDEDlg* pDlg = (CMyIDEDlg*)pParam;
      // 创建与wSpawn.exe通讯的可继承的匿名管道
      saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
      saAttr.bInheritHandle = TRUE;
      saAttr.lpSecurityDescriptor = NULL;
      if (!CreatePipe(&hRead, &hWrite, &saAttr, 0))
      {
        AfxMessageBox("创建管道失败");
        return 0;
      }
      // 准备wSpawn的命令行,在命令行给出写管道句柄和要wSpawn执行的命令
      memset(&pi, 0, sizeof(pi));
      sprintf(command_line, "wspawn -h %d cl /?", (unsigned int)hWrite);
      // 子进程以隐藏方式运行
      ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
      siStartInfo.cb = sizeof(STARTUPINFO);
      siStartInfo.wShowWindow = SW_HIDE;
      siStartInfo.dwFlags = STARTF_USESHOWWINDOW;
      // 创建wSpawn子进程
      if (!CreateProcess( NULL, command_line, NULL, NULL, TRUE,
                0, NULL, NULL, &siStartInfo, &pi))
      {
        AfxMessageBox("调用wSpawn时失败");
        return 0;
      }
      // 读管道,并显示wSpawn从管道中返回的输出信息
      if(!ReadFile( hRead, &len, sizeof(int), &dwRead, NULL) || dwRead == 0)
        return 0;
      while(len)
      {
        buf = new char[len + 1];
        memset(buf, 0, len + 1);
        if(!ReadFile( hRead, buf, len, &dwRead, NULL) || dwRead == 0)
          return 0;
        // 将返回信息中的"/n"替换为Edit Box可识别的"/r/n"
        tmp = buf;
        tmp.Replace("/n", "/r/n");
        Output += tmp;
        // 将结果显示在Edit Box中,并刷新对话框
        pDlg->m_edit1.SetWindowText(Output);
        pDlg->InvalidateRect(NULL);
        pDlg->UpdateWindow();
        delete[] buf;
        if(!ReadFile( hRead, &len, sizeof(int), &dwRead, NULL) || dwRead == 0)
          return 0;
      }
      // 等待wSpawn结束
      WaitForSingleObject(pi.hProcess, 30000);
      // 关闭管道句柄
      CloseHandle(hRead);
      CloseHandle(hWrite);
      return 0;
    }

      很简单,不是吗?后台线程创建一个匿名管道,然后以隐藏方式启动wSpawn.exe并将管道句柄通过命令行传给wSpawn.exe,接下来只要从管道里读取信息就可以了。现在我们可以试着编译运行myIDE.exe了,记住要把myIDE.exe和wSpawn.exe放在同一目录下。还有,我在myThread()函数中写死了传给wSpawn.exe的待执行的命令行是“cl /?”,这模拟了一次典型的编译过程,如果你不打算改变这一行代码的话,那一定要注意在你的计算机上,C++编译器cl.exe必须位于环境变量PATH 指明的路径里,否则wSpawn.exe可就找不到cl.exe了。下面是myIDE程序的运行结果:

    图片点击可在新窗口打开查看

      补充一点,上面给出的wSpawn利用_popen()完成子进程创建和输入输出重定向,这一方法虽然简单,但只能重定向子进程的stdout 或stdin,如果还需要重定向子进程的stderr的话(Java编译器javac就利用stderr输出结果信息),那我们就不能这么投机取巧了。根据以上讨论,你一定可以使用传统的_pipe()、_dup()等系统调用,写出功能更完整的新版wSpawn来,我这里就不再罗嗦了。

    展开全文
  • QT调用命令行程序

    千次阅读 2017-04-13 10:13:59
    QT调用命令行程序要用到QProcess类。  首先,讲一种特别简单的情况,直接调用Windows系统的记事本程序。  在某一个按钮上设置信号与槽,然后槽函数可以这样写:void test01::openNotepad() { QProcess * po = ...

          QT调用命令行程序要用到QProcess类。

          首先,讲一种特别简单的情况,直接调用Windows系统的记事本程序。

          在某一个按钮上设置信号与槽,然后槽函数可以这样写:

    void test01::openNotepad()
    {
    	QProcess * po = new QProcess(this);
    	po->start("notepad.exe");
    }

          之后,在界面上单击按钮,就会打开记事本。因为notepad.exe在Windows的系统目录下,该目录已经加在了系统PATH环境变量中,所以不需要写具体路径。

        

          下面说一种带参数的命令行调用的例子。

          首先,调用命令是这样的: E://ffmpeg.exe -i  input  -vn  -ar  16000  -ac  1  output

          input和output分别是输入输出文件。这条命令是利用ffmpeg工具提取input文件的音轨,保留在output文件中。

     

    void test01::extractAudio()
    {
    	/*QProcess * po = new QProcess(this);
    	po->start("notepad.exe");*/
    	QProcess * po = new QProcess(this);
    	QString program = "E:\\ffmpeg.exe";
    	QStringList argu;
    	argu.append("-i");
    	argu.append(fileName);  //fileName是E:\\1-1.avi
    	argu.append("-vn");    
    	argu.append("-ar");
    	argu.append("16000");
    	argu.append("-ac");
    	argu.append("1");      //单声道输出
    	argu.append("E:\\abcd.wav");
    	po->start(program,argu);
    }

         将音频保留在abcd.wav文件中。注意, 在目录中,可以使用“\\”或者“/”作为分隔符,两者等效。

        还要注意的一点是,在append参数的时候,不要加空格,直接把参数放进去就好了。

    展开全文
  • QT中QProcess调用命令行

    千次阅读 多人点赞 2016-04-16 13:52:22
    在QT程序中需要将某些目录和文件压缩为一个rar的压缩包,于是想到了在QT中通过QProcess类调用命令行的rar.exe来达到效果,但是没想到QProcess类用起来很麻烦,而且达不到效果,折腾了2天仍然没找到原因,使用另外一...

    在QT程序中需要将某些目录和文件压缩为一个rar的压缩包,于是想到了在QT中通过QProcess类调用命令行的rar.exe来达到效果,但是没想到QProcess类用起来很麻烦,而且达不到效果,折腾了2天仍然没找到原因,使用另外一种办法解决了

    创建压缩包的方法

    在windows平台创建压缩包,可以直接使用rar.exe,该程序在安装winrar之后,在其安装目录下就可以找到。该程序是winrar对应的命令行版本,其语法例子如下:

    rar.exe a -k -r -s -m1 test.rar direct1/   direct2/  test.txt

    例子对应的目录结构如下:

    上面的命令表示在当前目录下创建压缩包 test.rar ,将当前目录下的 direct1目录以及其所有子目录和文件、direct2目录以及其子目录和文件、当前目录下的文件test.txt 都添加到test.rar压缩包中。

    其中参数a表示添加到压缩包

    参数-r表示递归添加

    命令的问题解决了之后,那么下面就是如何在QT中调用该命令,实际上在QT中调用该命令就出现了很多问题。

    在QT中调用命令行

    QT中调用外部命令一般使用QProcess类提供的成员函数,其使用的具体代码如下:

    QProcess p(0);
    p.start(command,args); //command是要执行的命令,args是参数
    p.waitForFinished();//等待完成
    qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());

    套用上面的代码得到如下:

    QProcess p(0);
    QString command = "E:/test_rar_course/rar.exe";
    QStringList args;
    args.append("a");
    args.append("-k");
    args.append("-r");
    args.append("-s");
    args.append("-m1");
    args.append("E:/test_rar_course/test.rar");
    args.append("E:/test_rar_course/direct1/");
    args.append("E:/test_rar_course/direct2/");
    args.append("E:/test_rar_course/test.txt");
    p.execute(command,args);//command是要执行的命令,args是参数
    p.waitForFinished();
    qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());
    可以生成test.rar但是,该压缩包中将路径E:/test_rar_course也压缩进去了,而我需要的是打开压缩包之后仅仅看到direct1,direct2,test.txt3个项目,那么是不是设置一下工作目录就可以了呢:
    QProcess p(0);
    p.setWorkingDirectory("E:/test_rar_course/");//指定进程的工作目录
    QString command = "E:/test_rar_course/rar.exe";
    QStringList args;
    args.append("a");
    args.append("-k");
    args.append("-r");
    args.append("-s");
    args.append("-m1");
    args.append("-wE:/test_rar_course/");//指定rar.exe的工作目录
    args.append("test.rar");
    args.append("direct1/");
    args.append("direct2/");
    args.append("test.txt");
    p.execute(command,args);//command是要执行的命令,args是参数
    p.waitForFinished();
    qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());//获取输出

    我不仅添加-w参数(该参数为rar.exe的命令行参数,用于指定工作目录)为rar.exe命令指定工作目录,同时利用p.setWorkingDirectory()为启动的进程指定工作目录,运行之后报错,说找不到文件,我猜可能还是工作目录的问题,但是不知道问题在哪里,查了很多资料都无济于事,最终还是放弃了这种尝试,改成了下面的尝试:

    QProcess p(0);
    p.setWorkingDirectory("E:/test_rar_course/");//指定进程的工作目录
    QString command = "E:/test_rar_course/test.bat";
    p.start(command);
    p.waitForFinished();
    qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());

    而test.bat的内容为如下:

    cd /d E:/test_rar_course/E:/test_rar_course/rar.exe a -k -r -s -m1 -wE:/test_rar_course/ test.rar direct1/ direct2/ test.txt

    我直接在bat中通过cd命令切换工作目录,然后进行压缩,其中为了避免出现压缩绝对路径的情况,direct1,direct2,test.txt使用的都是相对路径,直接鼠标双击该test.bat运行OK,放在QT中运行OK,似乎完美的解决了问题。

    但是我发现,如果目录中出现()括号字符就不行了,当有括号字符的时候在QProcess执行的报错中显示路径被括号截断,此后我把路径用引号引起来没效果:

    "\"E:/test_rar_course(xx)/test.bat\""

    根据网上搜索到的信息,用^符号对括号进行转义没有截断的报错了,但是命令执行还是没有效果,控制台也没有报错:

    "E:/test_rar_course^(xx^)/test.bat"

    到这里我不知道该怎么样去达到我的效果,唯一的感觉QProcess怎么这么难用,如果有知道的QT大神,烦请告诉一下。我想到用另外一种方式来实现,就是用C++写一个dll实现,然后QT中调用。

    在QT中调用C++创建的dll

    主要代码如下,实际上就是调用system函数,但是如果路径中有圆括号,还是需要用^符号进行转义,否则system执行也有问题:

    void SystemTool::GenerateIndexRar(char * command)
    {
        if(command == NULL) return ;
        system(command);
    }

    但是除了圆括号要转义以外,还存在一个很不舒服的问题,就是每次执行都会弹出cmd的黑窗口,执行完成之后,窗口消失,代码改成下面的就好了:

    #include <windows.h>
    void SystemTool::GenerateIndexRar(char * command)
    {
             if(command == NULL) return ;
             /**
                WinExec 的windows 调用,可以通过参数SW_HIDE隐藏命令行黑窗口
                并且命令的路径是可以带括号的
              */
             WinExec(command,SW_HIDE);
    }

    到此完美解决该问题,既不需要对圆括号进行转义,同时也隐藏了黑窗口了。当然前述的test.bat的内容要在程序中动态生成,利用合适的路径替换掉test.bat中的路径。最后调用如:

    SystemTool::GenerateIndexRar("E:/test_rar_course(xx)/test.bat")

    原文链接:http://www.cnblogs.com/wangqiguo/p/4609228.html

     

     

    展开全文
  • vs编译器的名称是 cl ,安装目录下:D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin,添加路径到环境变量Path。 二、添加头文件include和库文件lib: 具体操作方法是,我的电脑->属性->高级-&...

    本文依据win10 和 VS2015 作为例子(其它版本文件夹可能不同)

    一、编译器路径设置

    vs编译器的名称是 cl ,安装目录下:D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin,添加路径到环境变量Path。

    二、添加头文件include和库文件lib:

    具体操作方法是,我的电脑->属性->高级->环境变量->新建。变量名为include(不区分大小写),然后变量值有两个,一个是C++的头文件在VS安装目录下,另一个是window头文件在C盘,用分号隔开,完整值为:

    D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
    
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include

    同样新建一个环境变量来加入lib的路径,变量名设为lib,变量值也是两个:

    D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib
    
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib

    (如果不包含路径lib,用cl编译会提示缺失库文件。)

    三、fatal error LNK1104: cannot open file libucrt.lib的解决

    在前面建立的lib环境变量下添加:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x86

    参考:https://software.intel.com/zh-cn/node/586119

    四、fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory的解决

    在前面建立的include环境变量下添加:C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt

    五、编译运行命令:

    Windows下使用命令行界面调用VS2015编译器编译C++程序命令:

    cl /EHsc Source.cpp

    会生成Source.exe的可执行文件。

    执行命令:

    Source.exe

    如图:

    获取main函数返回状态:

    echo %ERRORLEVEL%

    参考:https://software.intel.com/zh-cn/node/586119

    https://blog.csdn.net/weiwangchao_/article/details/13279221

    https://blog.csdn.net/sinat_36219858/article/details/78277432

    展开全文
  • system调用命令行命令而不显示命令行窗口通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口。代码如下#pragma comment( linker, "/subsystem:/"windows/" /entry:/...
  • 1. 问题背景 : 使用dos 命令...2. 嵌入在C/C++代码中的命令行一般有以下几种方式: SellExcute() system() WinExec() CreateProcess() 参数省略.................................................... 3. 解决方案:
  • x-server原理:...一、windows:192.168.0.106 1.安装Xming,他是一个X-server 2.调试CRT,将所有来自远程主机22端口的请求都转发到本机windows上,勾选转发X11数据。例如: 二、linux:192....
  •   关于Windows系统的CMD命令行,相信对计算机有一定了解的小伙伴都不陌生,但还是有很多摸不着头脑的初入门者,我们这期主要针对的就是这部分小伙伴。   首先说一下Windows系统的CMD命令行是个什么东西。   ...
  • 因为做demo展示,需要调用HMM中的HVite识别工具,用过网上推荐的system()、WinExec()、ShellExecute()函数等,发现问题是利用system函数可以识别得出对应的mlf文件,但是后两种方法只能得到空的mlf文件,没有得到...
  • 大家都知道 Windows Defender 是 Windows 10 中内置的反病毒、反恶意软件工具,通常情况下,它只在后台默默保护...不过,你是否知道 Windows Defender 其实是支持在命令行下工作的呢?想必有人已经想到了,只要支持...
  • 文章目录01 - 适用场合02 - 环境要求03 - 操作步骤3.1 - 界面3.2 - 界面的各种响应3.3 - QProcess的各种响应3.4 - 运行结果04 - 源代码05 - 总结   网上的教程基本没有交互的过程,官网也没有Demo,只有一堆API...
  • 前一段时间在自学linux系统,想模仿linux命令行的方式在Windows下编译C/C++程序, 摸索一段时间后总算把这个解决了! (1)先用记事本编写如下所示的代码,并另存为hello.cpp,假设其保存路径为 C:\Users\...
  • 之前使用linux系统下的gcc编译c文件,一般是通过终端调用命令的形式来进行编译以及调试。而在Windows下,我们通常使用的vs,codeblcoks等IDE(集成开发环境)进行编译,调试,执行等操作。集成开发环境(IDE,...
  • windows+cygwin用命令行打开窗口目录

    千次阅读 2013-05-06 17:27:46
    第一次尝试是浅层的...发现vc编译的exe是可以通过cygwin直接调用的,但是不知道opendir.exe功能应该怎么实现 第三次尝试是搜索windows下打开目录的命令:“windows open directory from command line”为关键字在g
  • 二、进入命令行界面,输入“cd/d”: 三、复制可执行文件(含.exe后缀)所在路径到命令行中: 四、按“Enter”键,输入“echo 20|Page_26.exe”(其中20是你想输入的值,Page_26.exe是可执行文件名): 注意: 1....
  • 前一段时间在自学linux系统,想模仿linux命令行的方式在Windows下编译C/C++程序, 摸索一段时间后总算把这个解决了! (1)先用记事本编写如下所示的代码,并另存为hello.cpp,假设其保存路径为 C:\Users\...
  • windows命令行常用命令

    千次阅读 2015-10-16 07:46:49
    windows系统中,点击开始-运行,可以直接输入命令行,快速打开一些原本需要多次点击图标才能打开的界面,如常用的输入cmd打开dos命令行,输入taskmgr打开任务管理器。此处列出了网上搜集到的一些常用命令。 ...
  • C++ 中隐藏DOS调用命令行窗口

    千次阅读 2011-03-14 15:43:00
    首先,我们可以用第二参数为SW_HIDE调用WinExec()这个windows的API,这时候又有个问题了,WinExec()是调用程序的,而DIR程序文件在哪里?呵呵,其实这点在有很多DOS使用经验的人都知道,DOS命令在以前就分两种,一种...
  • GIT可以安装windows、Linux、Mac等系统中,按照默认方式安装后,可以生成两个客户端,一个是图形化客户端“GIT GUI”, 一个是命令行客户端“GIT Bash”,这两种客户端都可以达到版本控制的目的。 1. 关于命令行 ...
  • Windows环境中,进行golang程序的开发,配置好go环境变量后,使用vscode编辑器开发、调试golang程序过程中,发现使用vscode的命令行终端无法识别环境变量参数。 查阅资料,发现大多写的都是设置vscode为“以管理...
  • windows10安装过程调用diskpart工具

    千次阅读 2018-09-27 22:06:16
    在使用U盘启动盘安装windows10的过程中,可能会需要用到命令行调用diskpart 过程如下: 1、shift+F10,调出命令行窗口 2、输入“diskpart”,进入diskpart 3、输入“list disk”,显示u当前的磁盘 4、输入...
  • windows常用命令行命令

    千次阅读 2018-09-28 23:35:51
    windows常用命令 打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd窗口;/k表示执行完命令后...
  • Windows 7 - 命令行参考 - SET

    千次阅读 2010-04-03 14:04:00
    Windows 7 - 命令行参考 - SET概述对于程序员来说,DRY原则(Dont Repeat Youself)可以说是程序员的天职。程序员通过编写程序把企业中的工作流程实现自动化,可以减少企业中工作人员大量的重复工作。一个程序员把...
  • Tesseract:安装命令行使用

    万次阅读 2016-11-23 14:37:31
    目录 ...简介获取,安装与配置 LinuxWindows 命令行使用 Tesseract 是一款被广泛使用的开源 OCR 工具,本文将对其进行简单的介绍. 简介 Tesseract(/'tesərækt/
  • Windows 命令行基础

    千次阅读 2013-04-22 01:06:47
    Windows 命令行基础 文件版本:1.0 最后修订:2008-6-23 作者: Henixhttp://hi.baidu.com/shell32> 本作品采用知识共享署名 2.5 中国大陆许可协议进行许可。 本文原始 HTML 档案请到 ...
  • 一BCDEdit命令操作实例 二 BCDEdit命令介绍 ... 在NT60系列操作系统(Windows 7/Vista/2008)中的一个命令行工具,用于建立和重新配置bootloader,后者无须再

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,294
精华内容 28,917
关键字:

windows安装界面调用命令行