时间: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的优缺点