BCB使用管道

bool __fastcall TForm1::RunCmd( AnsiString cmd,TStringList *stringlist )
{
    TMemoryStream *memstream=new TMemoryStream();
    AnsiString rn="\r\n";
    PROCESS_INFORMATION proc;
    STARTUPINFO start;
    SECURITY_ATTRIBUTES sa;
    long ret;
    unsigned long lngBytesread;
    HANDLE hReadPipe,hWritePipe;
    char *strBuff=(char *)malloc(256);
    if(strBuff==NULL)
    {
        return false;
    }
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.bInheritHandle=true;
    sa.lpSecurityDescriptor=NULL;
    ret=CreatePipe(hReadPipe,hWritePipe,sa,0);
    if(ret==0)
    {
        //创建管道失败
        return false;
    }
    memset(start,0x00,sizeof(STARTUPINFO));
    start.cb=sizeof(STARTUPINFO);
    start.dwFlags=STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
    start.hStdOutput=hWritePipe;
    start.hStdError=hWritePipe;
    bool retc=CreateProcess(NULL,cmd.c_str(),NULL,NULL,true, 0, 0, NULL, start, proc);
    if(!retc)
    {
        return false;
    }
    CloseHandle(hWritePipe);
    unsigned long len;
    memstream->Position=0;
    while(true)
    {
        memset(strBuff,0x00,256);
        GetFileSize(hReadPipe,len);
        ret = ReadFile(hReadPipe, strBuff, 256, lngBytesread,NULL);
        if(ret==0)
        {
            break;
        }
        else
        {
            memstream->Write(strBuff,lngBytesread);
        }
    }
    CloseHandle(proc.hProcess);
    CloseHandle(proc.hThread);
    CloseHandle(hReadPipe);
    memstream->Position=0;
    free(strBuff);
    stringlist->LoadFromStream(memstream);
        memstream->SaveToFile("C:\1.txt");
        for(int i =0; iCount; i++)
        {
            if(stringlist->Strings[i].Pos("TTL")!=0)
              return true;
        }

    memstream->Clear();
    delete memstream;
    return false;

}
void __fastcall TForm1::btn1Click(TObject *Sender)
{
   TStringList * stringlist  = new TStringList;
   if(RunCmd("ping -n 1 192.168.0.5",stringlist))
   {
     ShowMessage("通讯正常");
   }
   else
   {
     ShowMessage("通讯异常");
   }

}

 

posted @ 2016-02-25 15:56  風行  阅读(528)  评论(0编辑  收藏  举报