我正在使用提供给我的程序,它将运行一个进程,但我希望该进程在后台运行而不显示窗口.电话是
ExecProcess(ProgPath,'',False);
而且功能是
function ExecProcess(ProgramName,workdir: string; Wait: boolean): integer; var StartInfo: TStartupInfo; ProcInfo: TProcessinformation; CreateOK: boolean; ExitCode: integer; dwExitCode: DWORD; begin ExitCode := -1; FillChar(StartInfo,SizeOf(TStartupInfo),#0); FillChar(ProcInfo,SizeOf(TProcessinformation),#0); StartInfo.cb := SizeOf(TStartupInfo); if workdir <> '' then begin CreateOK := CreateProcess(nil,Addr(ProgramName[1]),nil,Addr(workdir[1]),false,CREATE_NEW_PROCESS_GROUP or norMAL_PRIORITY_CLASS,StartInfo,ProcInfo); end else begin CreateOK := CreateProcess(nil,ProcInfo); end; { check to see if successful } if CreateOK then begin // may or may not be needed. Usually wait for child processes if Wait then begin WaitForSingleObject(ProcInfo.hProcess,INFINITE); GetExitCodeProcess(ProcInfo.hProcess,dwExitCode); ExitCode := dwExitCode; end; end else begin ShowMessage('Unable to run ' + ProgramName); end; CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); Result := ExitCode; end;
我试图使用SW_MINIMIZE,SW_FORCEMINIMIZE和SW_SHOWMINIMIZED的StartInfo.wShowWindow属性,但它无法正常工作.我可以看到调试器中的属性正在发生变化,但就像我现在所理解的那样.有人能指出问题是什么吗?
编辑:如果重要我正在执行一些Fortran模块(.exe),其参数将打开一个CMD窗口.
解决方法
使用带有STARTF_USESHOWWINDOW的dwFlags强制使用wShowWindow
StartInfo.wShowWindow := SW_HIDE; StartInfo.dwFlags := STARTF_USESHOWWINDOW;
原文地址:https://www.jb51.cc/delphi/239428.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。