delphi – 使用’CreateProcess’隐藏流程窗口

前端之家收集整理的这篇文章主要介绍了delphi – 使用’CreateProcess’隐藏流程窗口前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用提供给我的程序,它将运行一个进程,但我希望该进程在后台运行而不显示窗口.电话是
  1. ExecProcess(ProgPath,'',False);

而且功能

  1. function ExecProcess(ProgramName,WorkDir: string; Wait: boolean): integer;
  2. var
  3. StartInfo: TStartupInfo;
  4. ProcInfo: TProcessInformation;
  5. CreateOK: boolean;
  6. ExitCode: integer;
  7. dwExitCode: DWORD;
  8. begin
  9. ExitCode := -1;
  10.  
  11. FillChar(StartInfo,SizeOf(TStartupInfo),#0);
  12. FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
  13. StartInfo.cb := SizeOf(TStartupInfo);
  14.  
  15. if WorkDir <> '' then
  16. begin
  17. CreateOK := CreateProcess(nil,Addr(ProgramName[1]),nil,Addr(WorkDir[1]),false,CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS,StartInfo,ProcInfo);
  18. end
  19. else
  20. begin
  21. CreateOK := CreateProcess(nil,ProcInfo);
  22. end;
  23.  
  24. { check to see if successful }
  25.  
  26. if CreateOK then
  27. begin
  28. // may or may not be needed. Usually wait for child processes
  29. if Wait then
  30. begin
  31. WaitForSingleObject(ProcInfo.hProcess,INFINITE);
  32. GetExitCodeProcess(ProcInfo.hProcess,dwExitCode);
  33. ExitCode := dwExitCode;
  34. end;
  35. end
  36. else
  37. begin
  38. ShowMessage('Unable to run ' + ProgramName);
  39. end;
  40.  
  41. CloseHandle(ProcInfo.hProcess);
  42. CloseHandle(ProcInfo.hThread);
  43.  
  44. Result := ExitCode;
  45.  
  46. end;

我试图使用SW_MINIMIZE,SW_FORCEMINIMIZE和SW_SHOWMINIMIZED的StartInfo.wShowWindow属性,但它无法正常工作.我可以看到调试器中的属性正在发生变化,但就像我现在所理解的那样.有人能指出问题是什么吗?

编辑:如果重要我正在执行一些Fortran模块(.exe),其参数将打开一个CMD窗口.

解决方法

使用带有STARTF_USESHOWWINDOW的dwFlags强制使用wShowWindow
  1. StartInfo.wShowWindow := SW_HIDE;
  2. StartInfo.dwFlags := STARTF_USESHOWWINDOW;

猜你在找的Delphi相关文章