delphi实现dos处理窗口的嵌套拜托各位大神

如何在delphi中实现dos处理窗口的嵌套使用?... 如何在delphi中实现dos处理窗口的嵌套使用? 展开
 我来答
元大师295
2014-08-06 · 超过57用户采纳过TA的回答
知道答主
回答量:122
采纳率:0%
帮助的人:114万
展开全部
[Delphi函数]把DOS程序的结果显示在MEMO中 procedure RunDosInMemo(Que:String;EnMemo:TMemo); const CUANTOBUFFER = 2000; var Seguridades : TSecurityAttributes; PaLeer,PaEscribir : THandle; start : TStartUpInfo; ProcessInfo : TProcessInformation; Buffer : Pchar; BytesRead : DWord; CuandoSale : DWord; begin with Seguridades do begin nlength := SizeOf(TSecurityAttributes); binherithandle := true; lpsecuritydescriptor := nil; end; {Creamos el pipe...} if Createpipe (PaLeer, PaEscribir, @Seguridades, 0) then begin Buffer := AllocMem(CUANTOBUFFER + 1); FillChar(Start,Sizeof(Start),#0); start.cb := SizeOf(start); start.hStdOutput := PaEscribir; start.hStdInput := PaLeer; start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; start.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(Que), @Seguridades, @Seguridades, true, NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo) then begin {Espera a que termine la ejecucion} repeat CuandoSale := WaitForSingleObject( ProcessInfo.hProcess,100); Application.ProcessMessages; until (CuandoSale <> WAIT_TIMEOUT); {Leemos la Pipe} repeat BytesRead := 0; {Llenamos un troncho de la pipe, igual a nuestro buffer} ReadFile(PaLeer,Buffer[0],CUANTOBUFFER,BytesRead,nil); {La convertimos en una string terminada en cero} Buffer[BytesRead]:= #0; {Convertimos caracteres DOS a ANSI} OemToAnsi(Buffer,Buffer); EnMemo.Text := EnMemo.text + String(Buffer); until (BytesRead < CUANTOBUFFER); end; FreeMem(Buffer); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); CloseHandle(PaLeer); CloseHandle(PaEscribir); end; end; Usage: RunDosInMemo('net user hysia /add',Memo1);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式