Delphi 中 ShellExecute 函数实现程序调用与延时执行

在 Delphi 开发中,ShellExecute 函数常被用于调用外部程序。通过灵活运用其参数,不仅可以实现简单的程序启动,还能实现延时执行等功能。

程序调用:

ShellExecute 函数的核心功能是调用可执行文件。开发者只需传入文件路径、参数等信息,即可启动目标程序。

延时执行:

借助 Windows API 中的等待函数 (如 WaitForSingleObject),可以实现 ShellExecute 函数调用后的延时操作。具体步骤如下:

  1. 调用 ShellExecute 函数启动目标程序。
  2. 获取启动程序的进程句柄。
  3. 使用 WaitForSingleObject 函数设置等待时间。
  4. 等待时间结束后,继续执行后续代码。

示例代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
  ProcessHandle: THandle;
begin
  // 初始化 ShellExecuteInfo 结构体
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);
  SEInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
  SEInfo.Wnd := Handle;
  SEInfo.lpFile := PChar('notepad.exe'); 
  SEInfo.nShow := SW_SHOW;

  // 调用 ShellExecute 函数
  if ShellExecuteEx(@SEInfo) then
  begin
    // 获取进程句柄
    ProcessHandle := SEInfo.hProcess;

    // 等待 5 秒
    WaitForSingleObject(ProcessHandle, 5000); 

    // 获取程序退出码
    GetExitCodeProcess(ProcessHandle, ExitCode);

    // 关闭进程句柄
    CloseHandle(ProcessHandle);
  end;
end;

ShellExecute 函数为 Delphi 开发者提供了便捷的程序调用方式,结合等待函数更能实现延时执行等功能,极大提升了程序的灵活性。

zip 文件大小:295.97KB