中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 综合文章
通过DELPHI小程序在WINDOWS下更好地使用DOS批处理
作者:未知 时间:2005-08-07 21:01 出处:编程爱好者网站 责编:chinaitpower
              摘要:通过DELPHI小程序在WINDOWS下更好地使用DOS批处理
我们知道 DOS 下的批处理程序中,可以用 ECHO 显示一段信息(提示信息或出错信息),对于要接收用户输入的情况,MS-DOS 本身提供的外部程序就只有 CHOICE 能让用户输入一个键,所以基本上只能用于菜单选择。对于下述两个需求,那就只有另外编程序了:
1、在 DOS 下的批处理程序中通过 WINDOWS 对话框显示一段提示信息或出错信息
2、在 DOS 下的批处理程序中通过 WINDOWS 对话框接收用户输入的一个字符串,并对其进行后续处理

对于这两个问题,相信有些人已经有了一些解决方案。在此我提出我的解决方案,是用 DELPHI 写的程序(这些DELPHI程序都是没有 FORM 和.PAS文件的),我觉得比较简单,作为抛砖引玉。

1.1 显示提示信息 SHOWMSG.DPR
program ShowMsg;
uses Windows;
{$R *.RES}
begin
  if ParamCount < 2 then
begin
MessageBox(0, '用Windows对话框显示信息'#13#10+
'用法: ShowMsg 提示信息 对话框标题',
'用法说明', MB_ICONINFORMATION);
Halt;
end;
MessageBox(0, PChar(ParamStr(1)), Pchar(ParamStr(2)), MB_OK);
Halt;
end.

1.2 显示出错信息 EmsgDlg.DPR
program EmsgDlg;
uses Windows;
{$R *.RES}
begin
if ParamCount < 2 then
begin
MessageBox(0, '用Windows对话框显示出错信息'#13#10+
'用法: EmsgDlg 出错信息 对话框标题',
'用法说明', MB_ICONINFORMATION);
Halt;
end;
MessageBox(0, PChar(ParamStr(1)), PChar(ParamStr(2)), mb_IconHand);
Halt;
end.

2. INPUTBOX.DPR: 通过 WINDOWS 对话框接收用户输入的一个字符串,并把用户输入作为调用一个批处理程序或其他程序的第1个参数
program INPUTBOX;
uses Dialogs, Windows;
{$R *.RES}
var
NewString: string;
ClickedOK: Boolean;
begin
if ParamCount < 4 then
begin
MessageBox(0, '将用户输入作为.BAT或其他程序的参数调用'#13#10+
'用法: InputBox .BAT或其他程序文件名 缺省输入 对话框标题 提示信息',
'InputBox用法说明', MB_ICONINFORMATION);
Halt;
end;
NewString := ParamStr(2); //default string
ClickedOK := InputQuery(ParamStr(3), ParamStr(4), NewString);
if ClickedOK then
WinExec(PChar(ParamStr(1) + ' ' + NewString), SW_SHOWNORMAL);
Halt;
end.


用法举例:
PRT.BAT文件内容:
@ECHO OFF
D:\POS\INPUTBOX.EXE PR30.BAT "99991231" "解压POS报表文件并用写字板打开入帐汇总表" "请输入日期:"

PR30.BAT文件内容:
@ECHO OFF
IF "%1"=="" GOTO END
D:
CD \POS\INBOX
IF NOT EXIST POS%1.ARJ GOTO NOT_FOUND
D:\POS\ARJ X -y POS%1.ARJ
CD D:\POS\INBOX\pos_report
IF NOT EXIST Pr30B%1.txt GOTO PR30_NOT_FOUND
C:\WINDOWS\WRITE Pr30B%1.txt
D:\POS\ShowMsg "成功!" "OK!!!"
GOTO END

:NOT_FOUND
D:\POS\EmsgDlg "文件D:\POS\INBOX\POS%1.ARJ找不到!" "出错!"
CD D:\
GOTO END

:PR30_NOT_FOUND
D:\POS\EmsgDlg "文件D:\POS\INBOX\pos_report\Pr30B%1.txt找不到!" "出错!"
CD D:\
GOTO END

:END

注:上述 DELPHI 程序编译后,INPUTBOX.EXE大小是308KB,EMSGDLG.EXE 和 ShowMsg.exe大小都是 17KB,没有比较用 VC 或 BCB 来写的结果。但可以肯定,用 WIN32 汇编产生的 .EXE 最小,不过我没有仔细学过 WIN32 汇编。欢迎有兴趣的大侠比较一下或提出改进方法。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有