再问上面这个问题之前,我先问个关于SetLength,我想问下他为什么不能直接赋值呢比如:SetLength('aaa',1);这样报错var
processInfo:TProcessInformation;
StartUp:TStartupInfo;
begin
FillChar(StartUp,SizeOf(StartUp),$00);
StartUp.dwFlags:=STARTF_USESHOWWINDOW;
StartUp.wShowWindow:=SW_HIDE;
if CreateProcess(nil, PChar(BatFileName), nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, StartUp,
ProcessInfo) then
begin
CloseHandle(processInfo.hThread);
CloseHandle(processInfo.hProcess);
end;
Application.Terminate;
end;
processInfo:TProcessInformation;
StartUp:TStartupInfo;
begin
FillChar(StartUp,SizeOf(StartUp),$00);
StartUp.dwFlags:=STARTF_USESHOWWINDOW;
StartUp.wShowWindow:=SW_HIDE;
if CreateProcess(nil, PChar(BatFileName), nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, StartUp,
ProcessInfo) then
begin
CloseHandle(processInfo.hThread);
CloseHandle(processInfo.hProcess);
end;
Application.Terminate;
end;
processInfo:TProcessInformation;
StartUp:TStartupInfo;
begin
FillChar(StartUp,SizeOf(StartUp),$00); // 把变量StartUp的内存冲零 其实第三个参数直接0即可
StartUp.dwFlags:=STARTF_USESHOWWINDOW;
StartUp.wShowWindow:=SW_HIDE;
if CreateProcess(nil, PChar(BatFileName), nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, StartUp,
ProcessInfo) then //API运行
begin
CloseHandle(processInfo.hThread); // 如果运行成功关闭 进程/线程句柄
CloseHandle(processInfo.hProcess);
end;
Application.Terminate;
end;