【发布时间】:2010-12-17 18:49:52
【问题描述】:
我正在尝试编写一个从 Delphi 2010 应用程序中执行 DOS 批处理程序的例程。我在 Delphi 6 中工作的旧例程不断给我错误消息:-
“Project1.exe 引发异常类 EAccessViolation,并带有消息“模块 'kernel32.dll' 中地址 7C82F29C 的访问冲突。写入地址 004A3B82”。
这是我在 Delphi 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”会给你一些选择。
标签: delphi batch-file