我正在尝试编写一个例程,该程序将从Delphi 2010应用程序中执行DOS批处理程序。我在Delphi 6中运行的旧例程不断给我提示错误信息: -如何从Delphi 2010应用程序中调用MS-DOS批处理程序
“Project1.exe引发异常类EAccessViolation,消息'模块'kernel32.dll'中的地址7C82F29C处出现访问冲突,写入地址004A3B82”。
这里是我的老套路,在德尔福工作6 -
Procedure TForm1.BatchProgramCall;
var
StartInfo: TStartUpInfo;
ProcInfo: TProcessInformation;
createOK: Boolean;
begin
FillChar(StartInfo, SizeOf(TStartUpInfo), #0);
FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
StartInfo.cb := SizeOf(TStartUpInfo);
StartInfo.dwFlags := STARTF_USESHOWWINDOW;
StartInfo.wShowWindow := SW_SHOWMINIMIZED;
createOK := CreateProcess(Nil,PCHAR('SOMEBATCHPROGRAM.BAT'),Nil, Nil, false,
CREATE_NEW_PROCESS_GROUP+HIGH_PRIORITY_CLASS,
NIL, NIL, STARTINFO, PROCINFO);
if createOK then
waitForSingleObject(PROCINFO.HPROCESS, Infinite);
end;
请让我知道我做错了或有更好的方法去这个... 非常感谢。
在StackOverflow上搜索“[delphi] ShellExecute”或“[delphi] ShellExecuteEx”会给你一些选择。 – mghie 2009-11-18 08:32:35