关于DOS窗口回显的问题求助

m0_37551303 2017-02-24 02:05:59
小弟我找到一个执行DOS程序并回显到Memo的代码,可是无法执行类似BAT的命令

例如BAT内容为: utfcmd.exe +login all +install_dir C:\ddd +update 1253 validate +quit

无法执行加号后面的命令。请大神们帮忙解决一下。急

回显源码为


procedure TForm1.btnRunClick(Sender: TObject);
var
hReadPipe, hWritePipe: THandle;
si: STARTUPINFO;
lsa: SECURITY_ATTRIBUTES;
pi: PROCESS_INFORMATION;
mDosScreen: string;
cchReadBuffer: DWORD;
ph: PansiChar;
fname: PChar;
i, j: integer;
begin
fname := allocmem(255);
ph := AllocMem(5000);
lsa.nLength := sizeof(SECURITY_ATTRIBUTES);
lsa.lpSecurityDescriptor := nil;
lsa.bInheritHandle := True;

if CreatePipe(hReadPipe, hWritePipe, @lsa, 0) = false then
begin
ShowMessage('Can not create pipe!');
exit;
end;
fillchar(si, sizeof(STARTUPINFO), 0);
si.cb := sizeof(STARTUPINFO);
si.dwFlags := (STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
si.wShowWindow := SW_HIDE;
si.hStdOutput := hWritePipe;
StrPCopy(fname, EditFilename.Text);

if CreateProcess(nil, fname, nil, nil, true, 0, nil, nil, si, pi) = False then
begin
ShowMessage('can not create process');
FreeMem(ph);
FreeMem(fname);
Exit;
end;


求助!!!!!!
...全文
308 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
santiaodahan 2017-02-26
  • 打赏
  • 举报
回复
引用 2 楼 m0_37551303 的回复:
[quote=引用 1 楼 santiaodahan 的回复:] 先测试bat文件是否正常执行。命令行包含空格、加号需要加双引号(")。
BAT正常,同样的句子回显就不正常[/quote] 其他命令是否回显正常?主要是你给的这个命令在其他人机器上没法调试,而且代码也不完整,没有输出部分。
m0_37551303 2017-02-25
  • 打赏
  • 举报
回复
引用 1 楼 santiaodahan 的回复:
先测试bat文件是否正常执行。命令行包含空格、加号需要加双引号(")。
BAT正常,同样的句子回显就不正常
santiaodahan 2017-02-25
  • 打赏
  • 举报
回复
先测试bat文件是否正常执行。命令行包含空格、加号需要加双引号(")。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧