delphi调用外部EXE,等待执行完毕时再响应后续操作.

function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID:
  PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
  @Filename[1],
  nil,
  nil,
  False,
  CREATE_NEW_CONSOLE or
  NORMAL_PRIORITY_CLASS,
  nil,
  nil,
  StartupInfo,
  ProcessInfo)
  then
  Result := WAIT_FAILED
  else
  begin
  if wait = FALSE then
  begin
  if ProcID <> nil then
  ProcID^ := ProcessInfo.dwProcessId;
  result := WAIT_FAILED;
  exit;
  end;
  WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
  GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
  CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
  CloseHandle(ProcessInfo.hThread);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ProcID: Cardinal;
begin
  ProcID := 0;
  if OpenDialog1.Execute then
  RunProcess(OpenDialog1.FileName, SW_SHOW, CheckBox1.Checked, @ProcID);
  ShowMessage(IntToStr(ProcID));
end;


1. CustomCursor ................. 自定义光标 2. ReadRegKey ................... 读注册表键值 3. WriteRegKey .................. 写注册表键值 4. GetExePath ................... 取应用程序路径 5. GetParameter ................. 取配置文件参数 6. RebootExpires ................ 让重新启动失效 7. RebootRestore ................ 恢复重新启动功能 8. CloseExpires ................. 使窗口关闭功能失效 9. CloseRestore ................. 恢复窗口关闭功能 10. HideDesktop ................. 隐藏桌面图标 11. ShowDesktop ................. 显示桌面图标 12. ChangeWallPaper ............. 更改墙纸 13. myGetWindowsDirectory ....... 取Windows目录 14. myGetSystemDirectory ........ 取系统目录 15. myGetTempPath ............... 取临路径 16. myGetLogicalDrives .......... 取逻辑驱动器 17. myGetUserName ............... 取用户名 18. myGetComputerName ........... 取计算机名 19. mySelectDirectory ........... 选择目录 20. myClearDocument ............. 清除开始菜单我的文档内容 21. SystemAbout ................. 调用系统关于对话框 22. SelectDir ................... 选择目录 23. HideFormOnTask .............. 在任务栏上隐藏窗口 24. ConvertBMPtoJPG ............. 转化BMP格式为JPG 25. ConvertJPGtoBMP ............. 转化JPG格式为BMP 26. Replacing ................... 替换某一字符串 27. SmallTOBig .................. 转化数字为大写中文(1 - 壹) 28. CreateShortCut .............. 建立快捷方式 29. myAddDocument ............... 增加文件到最近打开过的文档 30. GetFileIcon ................. 取得文件图标 31. GetCDROMNumber .............. 取CDROM序列号 32. SetCDAutoRun ................ 设置光驱是否自动运行 33. OpenCDROM ................... 打开光驱 34. CloseCDROM .................. 关闭光驱 35. GetDiskSizeAvail ............ 取磁盘所有字节数和剩余字节数 36. GetDiskSize ................. 取磁盘所有字节数和剩余字节数 37. SystemBarCall ............... 系统控制面板功能调用 38. GetUserNameAPI .............. 取用户名(API方式) 39. GetWindowsProductID ......... 取WINDOWS产品ID 40. HideTaskbar ................. 隐藏任务栏 41. ShowTaskbar ................. 显示任务栏 42. MakeTree .................... 获取目录树 43. CreateDsn ................... 建立DSN 44. CnToPY ...................... 转化中文为拼音首字母 45. AddIcoToIE .................. 增加应用程序图标到IE 46. SetVolume ................... 设置磁盘卷标 47. FormatFloppy ................ 格式化软盘 48. IsAudioCD ................... 判断光驱中是否为CD盘 49. PlayAudioCD ................. 播放CD盘 50. DiskInDrive ................. 判断驱动器是否就绪 51. CheckDriverType ............. 检查驱动器类型 52. IsFileInUse ................. 判断文件是否在使用 53. CopyDir ..................... 拷贝目录包含子目录 54. DeleteDir (No use) .......... 删除目录包含子目录 55. CreateTempFile .............. 建立临文件 56. SearchFile .................. 寻找文件 57. GetProgramAssociation ....... 取得应用程序扩展 58. myGetFileTime ............... 取文件建立间 59. SetFileDateTime ............. 设置文件间 60. GetFileLastAccessTime ....... 取文件最后访问间 61. CreateDirectory ............. 建立目录 62. ChangeDirectory ............. 改变目录 63. GetDirectory ................ 得到目录 64. SetCurrentDirectory ......... 设置当前目录 65. RenameDirOrFile ............. 更改目录或文件名 66. CreateMultiDir .............. 建立多级目录 67. DirExist .................... 判断目录是否存在 68. ChangeFileExtension ......... 更改文件扩展名 69. GetFileExtension ............ 取文件扩展名 70. FileCopy1 ................... 文件拷贝 71. FileCopy2 ................... 文件拷贝 72. FileCopy3 ................... 文件拷贝 73. SetFileAttribAPI ............ 设置文件属性(API方式) 74. SetFileAttrib ............... 设置文件属性 75. GetFilePath1 ................ 取得文件路径(有'\'结尾) 76. GetFilePath2 ................ 取得文件路径(没有'\'结尾) 77. CopyDelRenMovFile ........... 拷贝、删除、改名或移动文件 78. GetPortUsed ................. 得到已被使用串口列表 79. SetMediaAudioOff ............ 静音播放媒体文件 80. SetMediaAudioOn ............. 打开媒体播放文件声音 81. WaitExeFinish ............... 等待直到可执行文件执行完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值