怎么用DELPHI执行一个bat文件,且之后还能在程序里关闭这个cmd窗口? 怎么用DELPHI执行一个bat文件,且之后还能在程序里关闭这个cmd窗口?最近写一个程序,需要在业务代码开始之前先运行一个java写的程序,这个程序运行之后是个黑黑的cmd窗口,这是一个命令行程序程序退出的时候,我希望可以同时向这个CMD窗口发送一些命令(Exit),使得相关java程序正常退出,然后关闭这个cmd窗口。有没有办法实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 shellexecute(form1.handle,'open','c:\vcvarsall.bat','-s','',sw_show);一般执行完会自动关闭 Shellexecute执行,如果查找窗口可以用进程快照,CreateToolhelp32Snapshot,遍历进程,找到了就发送WM_Close消息或者直接TermianteProcess 不会自动退出那就用遍历进程的方法TerminateProcess,只要知道进程名就好办 var BatchFileName: string; ProcessInfo: TProcessInformation; StartUpInfo: TStartupInfo;begin BatchFileName := ExtractFilePath(ParamStr(0)) + 'A.bat'; FillChar(StartUpInfo, SizeOf(StartUpInfo), $00); StartUpInfo.dwFlags := STARTF_USESHOWWINDOW; StartUpInfo.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(BatchFileName), nil, nil, False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then begin CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end;end; 用FindWindow找到句柄,再用sendmessage或postmessage发送WM_CLOSE关闭之。若关不了,就直接TerminateProcess 哦,还有交互的需要啊,那就使用doscmd控件 在bat里最后加上一行:EXIT执行完了就自动退CMD窗口了啊。 然后显示时间查询 问一个打包的问题 知道一个对象和他的方法名如何动态调用? GSM利用在海上能行的通吗? 兄弟姐妹们,怎么搜索这里的帖子呀????? 救命啊!刚用DELPHI,用ADO连ACCESS怎么样配置才能获得其虚拟路径 !谢谢了 如何在主窗体居中的画一个图片? 对应的查询赋值如何实现? 关于运行时带参数的问题 在哪儿可以找到网吧管理软件的源代码? 鼠标浮点取值 请问一下Delphi如何继承窗口上的某一个输入框来用?
shellexecute(form1.handle,'open','c:\vcvarsall.bat','-s','',sw_show);
一般执行完会自动关闭
var
BatchFileName: string;
ProcessInfo: TProcessInformation;
StartUpInfo: TStartupInfo;
begin
BatchFileName := ExtractFilePath(ParamStr(0)) + 'A.bat';
FillChar(StartUpInfo, SizeOf(StartUpInfo), $00);
StartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow := SW_HIDE;
if CreateProcess(nil, PChar(BatchFileName), nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,
ProcessInfo) then
begin
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
end;
end;
再用sendmessage或postmessage发送WM_CLOSE关闭之。
若关不了,就直接TerminateProcess
哦,还有交互的需要啊,那就使用doscmd控件
EXIT执行完了就自动退CMD窗口了啊。