导航
  • 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

怎样在Delpi中调用一个Dos命令并将结果输出到一个TMemo中?

编程小战 2002-11-21 11:59:49
以前看过一篇相关文章,但找不到了,希望高人指点一二!
...全文
28 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
goomoo 2002-11-21
以下是c:\test.bat的内容:

rem--------------------
@echo off
dir c:\>c:\test.txt
rem--------------------

分数太少。
回复
goomoo 2002-11-21
procedure TForm1.Button1Click(Sender: TObject);
begin
winExec('c:\test.bat',0);

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (fileExists('c:\test.txt')) then
memo1.Lines.LoadFromFile('c:\test.txt');
end;
回复
编程小战 2002-11-21
unit Console;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ShellAPI;

type
TConsoleForm = class(TForm)
btOpen: TButton;
btClose: TButton;
btRun: TButton;
btOutput: TButton;
procedure btOpenClick(Sender: TObject);
procedure btCloseClick(Sender: TObject);
procedure btOutputClick(Sender: TObject);
procedure btRunClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
ConsoleForm: TConsoleForm;

implementation

{$R *.dfm}

procedure TConsoleForm.btOpenClick(Sender: TObject);
begin
if not AllocConsole then Application.MessageBox('Can''t allocate console!','Console',MB_OK OR MB_ICONINFORMATION)
else SetConsoleTitle('Console Demo');
end;

procedure TConsoleForm.btCloseClick(Sender: TObject);
begin
if not FreeConsole then Application.MessageBox('Can''t free console!','Console',MB_OK OR MB_ICONINFORMATION);
end;

procedure TConsoleForm.btOutputClick(Sender: TObject);
var OutText:PChar;nWrite:Cardinal;sHandle:Cardinal;
begin
OutText:='Hello,console!'#$A#$D;
sHandle:=GetStdHandle(STD_OUTPUT_HANDLE);
if (sHandle<>0) then
begin
WriteConsole(sHandle,OutText,StrLen(OutText),nWrite,nil);
end;
end;

procedure TConsoleForm.btRunClick(Sender: TObject);
begin
//这里要运行dos的dir命令,并将结果输出到"Open"按钮打开的Console
//Window,怎么写
end;

end.
回复
hansion3406 2002-11-21
还是楼上的比较安全..最好用Shellexecute
回复
jackie168 2002-11-21
uses Shellapi;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(handle,nil,pchar('c:\windows\123.bat'),nil,nil,sw_shownormal);
end;
回复
goomoo 2002-11-21
"其实可以直接把命令些在WINEXEC里"

错误!
Dos内部命令是不能在 WinExec() 里执行的。
回复
hacking 2002-11-21
同意楼上,其实可以直接把命令些在WINEXEC里
回复
发动态
发帖子
Delphi
创建于2007-08-02

4802

社区成员

Delphi 开发及应用
申请成为版主
社区公告
暂无公告