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("通讯异常");
}
}