CBuilder中使用管道技術例項 (轉)
廢話不多說,大家來看程式碼
bool __fastcall TForm1::RunCmd(AnsiString cmd,TStringList *stringlist)
{
TMemoryStream *memstream=new TMemoryStream();
AnsiString rn="";
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->Clear();
delete memstream;
return true;
}
以上為一個使用管道獲取命令列的的執行結果的。
使用程式碼
TStringList *StrList=new TStringList;
AnsiString strcmd;
RunCmd(strcmd,StrList);
結果保留再StrList中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-997997/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分享一個Laravel中的管道的使用例項Laravel
- Redis管道技術的使用Redis
- Windows管道技術簡述 (轉)Windows
- 元件技術的本質COM例項分析一 (轉)元件
- 【轉】java中註解的使用與例項Java
- 速度不夠,管道來湊——Redis管道技術Redis
- 演示中斷處理的例項(例項六)(轉)
- 併發技術3:管道通訊
- linux程式間通訊-----管道總結例項Linux
- PAM認證模組使用例項(轉)
- 技術寫作例項解析 | 簡潔即是美
- 例項講解MySQL資料庫的查詢最佳化技術(轉)MySql資料庫
- Linux中printf命令使用例項Linux
- Java中Websocket使用例項解讀JavaWeb
- 例項解說Linux中fdisk分割槽使用方法(轉)Linux
- ASP 中 Split 函式的例項 (轉)函式
- Web 開發中應用 HTML5 技術的10個例項教程WebHTML
- Lilo使用技術(轉)
- [轉]使用 db2icrt 建立例項DB2
- Java技術分享:Lambda表示式之介面例項化Java
- 網易雲 MySQL例項遷移的技術實現MySql
- ZT - RFT ScriptAssure 技術解析及應用例項(4)
- 技術前沿:AI大模型在自動化測試中的應用例項AI大模型
- Linux 中的 JQ 命令使用例項Linux
- Linux中ip命令的使用例項Linux
- vue例項中watch屬性的使用Vue
- Linux 中 ss 命令的使用例項Linux
- Linux中的basename命令使用例項Linux
- JAVA中動態性例項解釋 (轉)Java
- Linux系統在儲存技術中的幾項應用(轉)Linux
- 博文|Apache Pulsar 在自研資料管道中的技術實踐Apache
- PG技術大講堂 - Part 4:PostgreSQL例項結構SQL
- 出口電商+跨境物流技術挑戰:MongoDB應用例項MongoDB
- JAAS簡介及例項(來自JavaEye技術網站)Java網站
- 核心技術:J2ME中RMS的使用解析(轉)
- pinctrl使用例項
- 使用點陣圖選單項——點陣圖選單項例項 (轉)
- APIHOOK例項剖析 (轉)APIHook