解决方案 »

  1.   

    还有telnet.exe会一闪而过,这个要怎么解决。
      

  2.   

    CreateProcess,然后通过pipe管道交互输入输出
      

  3.   

    ShellExecuteEx
      

  4.   

    我创建了2个pipe管道,一个用来输入信息,一个用来读取信息,但是运行时,程序会未响应(崩溃),如果createprocess调用的是cmd.exe,却能获取pipe管道信息,这是什么原因啊?
      

  5.   

    附上代码 HANDLE hRead1,hRead2,hWrite1,hWrite2;
        SECURITY_ATTRIBUTES sa1;
        sa1.lpSecurityDescriptor = NULL;
        sa1.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa1.bInheritHandle = TRUE;    if(!CreatePipe(&hRead1,&hWrite1,&sa1,0))
        {
            MessageBox("创建匿名管道失败!");
    } SECURITY_ATTRIBUTES sa2;
        sa2.lpSecurityDescriptor = NULL;
        sa2.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa2.bInheritHandle = TRUE;    if(!CreatePipe(&hRead2,&hWrite2,&sa2,0))
        {
            MessageBox("创建匿名管道失败!");
    }

    CString telnetPath = "";
        char cCommandLine[MAX_PATH];
        telnetPath = g_filepath + "\\telnet.exe";
        ::strcpy(cCommandLine,telnetPath); STARTUPINFO si;
        PROCESS_INFORMATION pi;
        ZeroMemory(&si,sizeof(si));
        si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
        si.wShowWindow = SW_SHOW;
        si.hStdInput = hRead1;
        si.hStdOutput = si.hStdError = hWrite2;
        CreateProcess(cCommandLine,NULL,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi); Sleep(500); char Buff[] = "open XXXXXXX XXX\r\n";
        DWORD dwWrite = 0;
        if(!WriteFile(hWrite1,Buff,strlen(Buff)+1,&dwWrite,NULL))
       {
            MessageBox("写入数据失败!");
        } Sleep(500); char buffer[4096] = {0};
    DWORD bytesRead = 0;
    if(ReadFile(hRead2,buffer,4095,&bytesRead,NULL))
    {
    MessageBox(buffer);
    }