时间:2011/9/3 14:52:25 点击:

核心提示: procedure RunDosCommand(Que:String;EnMemo:TMemo); const CUANTOBUFFER = 2000; var Seguridades : TSecu...
procedure RunDosCommand(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 ;
作者:网络 来源:转载
  • Delphi获取IP138的数据查询
  • Delphi中获取TWebBrowser中鼠标移动到超链接的URL
  • 关于跨进程使用回调函数的研究,以跨进程获取Richedit中RTF流为例
  • Delphi调用Cmd命令行并取得返回结果
  • 在Delphi程序中调用控制面板设置功能
  • 在Delphi中捕获控制台程序的输出
  • Delphi获取真正随机数的代码
  • Delphi获取进程的命令行参数
  • Delphi中使用ResourceUtil获取程序内的RCData资源
  • Delphi中GetTickCount获取开机时间的代码
  • Delphi中设置和获取CapsLock和NumLock键的状态
  • Delphi中GUI程序调用控制台输入输出
  • Delphi添加控制台模式的应用程序的默认图标
  • Delphi中用GetTickCount获取计算机运行时间
  • Delphi中如何控制其他程序窗体上的窗口控件
  • Delphi中窗体的帮助按钮上执行一个自定义的动作
  • 09-03 Delphi中实现调用Google Chrome框架
  • 09-03 Delphi阻断弹出式广告的BHO
  • 09-03 Delphi使用COM对象的时候是否需要CoInitialize
  • 09-03 Delphi中COM自动化对象中使用事件
  • 09-03 Delphi写COM+的心得体会
  • 09-03 Delphi写StringGrid导出到Excel转换函数
  • 09-03 在程序运行时自动注册ActiveX控件
  • 09-03 Delphi开发的非常小的OCX组件
  • 09-03 Delphi中使用Office中VBA的优缺点
  •