分享

在 Delphi 中执行 Windows 命令行程序

 和谐世界 2023-07-21 发布于福建

在 Delphi 中执行 Windows 命令行程序,你可以使用  TProcess  组件来实现。以下是一个简单的示例:

uses

  System.SysUtils, System.Classes, Winapi.Windows, Winapi.ShellAPI;

procedure ExecuteCommandLine(const ACommandLine: string);

var

  ProcessInfo: TProcessInformation;

  StartupInfo: TStartupInfo;

begin

  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);

  StartupInfo.cb := SizeOf(TStartupInfo);

  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;

  StartupInfo.wShowWindow := SW_HIDE;

  if CreateProcess(nil, PChar(ACommandLine), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then

  begin

    // 等待命令行程序执行完成

    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);

    CloseHandle(ProcessInfo.hThread);

    CloseHandle(ProcessInfo.hProcess);

  end

  else

    RaiseLastOSError;

end;

// 示例用法

begin

  try

    ExecuteCommandLine('cmd.exe /C dir'); // 执行 dir 命令

  except

    on E: Exception do

      ShowMessage('执行命令行程序失败: ' + E.Message);

  end;

end.

在上面的示例中, ExecuteCommandLine  过程接受一个命令行字符串作为参数,并使用  CreateProcess  API 执行该命令行。 TStartupInfo  结构用于配置新进程的启动信息,其中  wShowWindow  字段设置为  SW_HIDE ,以隐藏命令行窗口。使用  WaitForSingleObject  来等待命令行程序执行完成。

请注意,使用  CreateProcess  函数需要  Winapi.Windows  和  Winapi.ShellAPI  单元。另外,确保在执行命令时提供正确的命令行参数,并根据需要处理可能的异常情况。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多