M
MaoSheng lee
Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
pInfomation:TProcessInformation;
sStartupInfo:TStartupInfo;
begin
sStartupInfo.cb := SizeOf(sStartupInfo);
sStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
sStartupInfo.wShowWindow := SW_hide;
if not CreateProcess('d:/bkdata/bkdata.bat',nil,nil,nil,
false,0,nil,nil,sStartupInfo,pInfomation) then
Application.MessageBox('Error Run!','Warning',mb_ok+MB_ICONINFORMATION)
else
WaitForSingleObject(pInfomation.hProcess,infinite);
//用CreateProcess的最主要目的
edit1.text:='Finish Run!';
end;
//假设 bkdata.bat 文件: @ copy backup.zip test.zip (backup.zip > 50M btys),仅仅是假设的外部程序.
问题是: 当sStartupInfo.wShowWindow := SW_show;时会出现一个讨厌的dos窗口.不喜欢!
当sStartupInfo.wShowWindow := SW_hide;时象上面,当外部程序执行完之后,程序就无法往下运行,当然
也无法运行GetExitCodeProcess,当按Ctrl+Alt+Del时会发现有WinoldApp,当把bkdata.bat转换成
bkdata.pif(设退出时关闭)就没问题.但是我是在程序中产生的BAT,我又不会在程序中做PIF,
简单地说问题是: 怎样才能有效关闭执行完之后的外部程序?
顺便问一下: 有谁知道MTX_.EXE是什么东西?
var
pInfomation:TProcessInformation;
sStartupInfo:TStartupInfo;
begin
sStartupInfo.cb := SizeOf(sStartupInfo);
sStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
sStartupInfo.wShowWindow := SW_hide;
if not CreateProcess('d:/bkdata/bkdata.bat',nil,nil,nil,
false,0,nil,nil,sStartupInfo,pInfomation) then
Application.MessageBox('Error Run!','Warning',mb_ok+MB_ICONINFORMATION)
else
WaitForSingleObject(pInfomation.hProcess,infinite);
//用CreateProcess的最主要目的
edit1.text:='Finish Run!';
end;
//假设 bkdata.bat 文件: @ copy backup.zip test.zip (backup.zip > 50M btys),仅仅是假设的外部程序.
问题是: 当sStartupInfo.wShowWindow := SW_show;时会出现一个讨厌的dos窗口.不喜欢!
当sStartupInfo.wShowWindow := SW_hide;时象上面,当外部程序执行完之后,程序就无法往下运行,当然
也无法运行GetExitCodeProcess,当按Ctrl+Alt+Del时会发现有WinoldApp,当把bkdata.bat转换成
bkdata.pif(设退出时关闭)就没问题.但是我是在程序中产生的BAT,我又不会在程序中做PIF,
简单地说问题是: 怎样才能有效关闭执行完之后的外部程序?
顺便问一下: 有谁知道MTX_.EXE是什么东西?