Delphi:等待bat脚本运行结束

2023-12-08

我有bat 文件,可以进行一些操作。如何从 Delphi 运行该文件并等待,直到它停止。 像这样的东西:

procedure TForm1.Button1Click(Sender: TObject);
begin
//Starting bat-file
bla-bla-bla
showmessage('Done');
end;

这将执行给定的命令行并等待命令行启动的程序退出。如果程序返回零退出代码,则返回 true;如果程序未启动或返回非零错误代码,则返回 false。

function ExecAndWait(const CommandLine: string) : Boolean;
var
  StartupInfo: Windows.TStartupInfo;        // start-up info passed to process
  ProcessInfo: Windows.TProcessInformation; // info about the process
  ProcessExitCode: Windows.DWord;           // process's exit code
begin
  // Set default error result
  Result := False;
  // Initialise startup info structure to 0, and record length
  FillChar(StartupInfo, SizeOf(StartupInfo), 0);
  StartupInfo.cb := SizeOf(StartupInfo);
  // Execute application commandline
  if Windows.CreateProcess(nil, PChar(CommandLine),
    nil, nil, False, 0, nil, nil,
    StartupInfo, ProcessInfo) then
  begin
    try
      // Now wait for application to complete
      if Windows.WaitForSingleObject(ProcessInfo.hProcess, INFINITE)
        = WAIT_OBJECT_0 then
        // It's completed - get its exit code
        if Windows.GetExitCodeProcess(ProcessInfo.hProcess,
          ProcessExitCode) then
          // Check exit code is zero => successful completion
          if ProcessExitCode = 0 then
            Result := True;
    finally
      // Tidy up
      Windows.CloseHandle(ProcessInfo.hProcess);
      Windows.CloseHandle(ProcessInfo.hThread);
    end;
  end;
end;

From:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi:等待bat脚本运行结束 的相关文章

  • 使用批处理解析 XML 文件以从某些特定节点获取值

    对于每个节点列表有Lists作为其父节点 我想获取 保存前三个节点的变量值 即entry output and token 我知道如何使用 vbscript 来做到这一点 但对我来说 批量解决方案更有趣 请问可以做吗
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 如何成功地用 XML 中的批处理替换文本

    我尝试使用批处理在 XML 页面中替换字符串 但无法成功完全替换它 我有这个批处理代码 echo off setlocal EnableDelayedExpansion set search logLevel 3 set replace l
  • Delphi:写入后代类中私有祖先的字段

    我需要修复第三方组件 该组件的类具有私有变量 该变量由其后代主动使用 TThirdPartyComponentBase class private FSomeVar Integer public end TThirdPartyCompone
  • 使用 for /f 查找并替换字符串为 if 语句和变量

    我编写了一个批处理文件 我想用另一个 txt 文件中的字符串覆盖关键字符串 目前 它完美地复制新的 File txt 文件 但不会用 OldFile txt 文件中的字符串替换字符串 File txt 文件中的字符串示例 密码 Pword
  • 如何获取Windows批处理的父文件夹

    我正在编写一个批处理文件 我需要获取该bat文件的父文件夹 有可能吗 注意 我的意思是批处理文件的父文件夹 而不是调用该批处理的提示的当前目录 Thanks 批处理的父文件夹位于变量中 dp0位于 例子 echo off setlocal
  • 对象的引用计数

    在我的代码中 我使用一个小的数据存储类 它是在不同的地方创建的 为了避免内存泄漏并简化事情 我想使用引用计数 所以我这样做了 type TFileInfo class TInterfacedObject IInterface 并删除了我对
  • 打印 TDBGrid [重复]

    这个问题在这里已经有答案了 如何在不安装或下载组件的情况下打印 DBGrid OR 如何将 DBGrid 的数据放入 RichEdit 以便我可以从那里打印它 数据感知控件从 DataSource 属性获取数据 并使用它 不过 您必须手动遍
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty
  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • 从其可执行文件的路径获取服务名称

    我有一个可执行文件的路径 它是一个正在运行的服务应用程序 例如 C Program Files x86 Someapp somesvc exe 我想停止并启动它 为此我想我需要获取服务的名称 如下所示 this https stackove
  • 批处理脚本 - IF EXIST 复制到 %localappdata% 错误

    我似乎被批处理脚本困住了 需要一些帮助 基本上我需要检查文件是否存在于文件夹中 localappdata 如果确实如此 则覆盖该文件 如果没有放置在不同的位置 那么目前它的内容如下 IF EXIST localappdata foldern
  • Delphi 的内存分析工具?

    我建立了一个项目并运行它 然后在 Process Explorer 中查看它 结果发现它在启动时使用的 RAM 比我想象的要多 5 倍 现在 如果我的程序运行得太慢 我会将其连接到分析器并让它告诉我什么正在使用我的所有周期 有没有类似的工具
  • 如何将 Hudson/Jenkins 参数传递给 Windows 批处理命令

    好吧 我需要在我的 Hudson 作业中执行一个批处理文件 我有一个参数 Jenkis 参数 我需要将这个值 如参数 传递给批处理文件 我尝试了以下操作 Deploy cmd configuration DEPLOYCONFIGURATIO
  • 如何在按键时识别 unicode 键?

    我的应用程序使用 unicode 字符 并且我有几个文本字段 我想限制用户输入特殊字符 例如 begin if not Key in a z A Z 0 9 13 8 then Key 0 if Key 13 then bOk Click
  • MainFormOnTaskbar + 工具提示导致焦点窃取

    我使用 Delphi XE2 构建了下面的代码 它创建 Form1 Form1 立即创建 Form2 的实例 当我按下 Form2 上的按钮时 会创建第二个 Form2 现在 如果我将鼠标悬停在第二个 最上面的 Form2 上的按钮上 并等
  • 有用的 Delphi 代码模板

    我用 Delphi 编程已经两年多了 我大概只有 5 个自定义模板 我觉得我应该有更多 如果有人有任何特别有用的东西 那么在 stackoverflow 上有一个很好的存储库就太好了 我不在乎您使用的是 Delphi 2009 语法还是 D
  • 使用 Delphi 10.2.1 Tokyo 的模态 Android 对话框

    我有以下用于在 Android 上显示模式消息的 Delphi 代码 该代码在 10 1 Berlin 上运行良好 但在 Delphi 10 2 1 Tokyo 上停止运行 此过程现在会挂起 Android 应用程序 procedure c
  • Delphi XE4 中是否可以更改应用程序短标题而不使其与项目 dpr 名称相同?

    我正在编写我的第一个由 delphi 驱动的 iPhone 应用程序 我已经创建了它 但我希望将其命名为 dpr 文件名称以外的名称 因为 dpr 文件不能包含空格 例如 EXE 名称并不总是与人们可能分配给应用程序的人类可读名称相同 而在
  • 为什么 C# ProcessStartInfoRedirectStandardOutput 会导致 xcopy 进程失败

    这有点痛苦 因为我现在没有代码 但我会尽力解释 我有一个简单的 C 应用程序 它启动 Ruby 脚本 它还执行一些其他操作 因此它生成一个批处理文件并执行该文件 我正在使用 C 进程对象并设置以下内容 重定向标准输出 true 重定向标准错

随机推荐

  • 列表视图滚动不平滑

    我有一个自定义列表视图 显示用户和照片 我从 API 检索数据 它提供 JSON 输出 我的问题是列表视图滚动不顺畅 它挂起一秒钟并滚动 它重复相同的操作直到我们到达末尾 我认为这可能是因为我正在 UI 线程上运行与网络相关的操作 但即使在
  • 实体框架能否在保存时自动将日期时间字段转换为 UTC?

    我正在使用 ASP NET MVC 5 编写一个应用程序 我要存储在数据库中的所有日期时间必须首先从本地时区转换为 UTC 时区 我不确定在请求周期内最好的地方在哪里 我可以在控制器中通过 ViewModel 规则后将每个字段转换为 UTC
  • JS 中的猜数字游戏

    我想创建一个数字游戏 用户输入 1 100 之间的数字 脚本将尝试猜测 10 次用户的输入 如果猜对的数字在 10 以内 则用户获胜 否则用户获胜 到目前为止 我让它正常工作 除了我在尝试让它显示游戏结束时的猜测数量时遇到问题 例如 如果进
  • 如何使用模型/视图/控制器方法制作 GUI?

    我需要理解模型 视图 控制器方法背后的概念以及如何以这种方式编写 GUI 这只是一个非常基本 简单的 GUI 有人可以向我解释如何使用 MVC 重写这段代码吗 from tkinter import class Application Fr
  • 使用 Button Jupyter Notebook 终止循环?

    我想要 从串口读取 无限循环 当按下 STOP 按钮时 gt 停止读取并绘制数据 From 如何通过按键终止 while 循环 我以使用键盘中断为例 这有效 但我想使用一个按钮 键盘中断示例 weights times open port
  • 将 ACE 与 WT 结合使用

    UPDATE 3最终工作代码如下 您需要 src 文件夹中的 ace js 它无法从库中运行 您需要从他们的站点获得预打包版本 WText editor new WText root editor gt setText function n
  • 在 Kubernetes Python 客户端中使用 create_namespaced_secret API

    我必须创建一个像这样的秘密 但是使用Python kubectl create secret generic mysecret n mynamespace from literal etcdpasswd echo n PASSWORD ba
  • 为什么我的坐标区对象的 ButtonDownFcn 回调在绘制某些内容后停止工作?

    我正在图中创建一组轴并为其分配回调 ButtonDownFcn 像这样的财产 HRaxes axes Parent Figure Position 05 60 9 35 XLimMode manual ButtonDownFcn HR Bu
  • 在 unicode 中填充“o”字符或通过 CSS 模仿

    我需要用 HTML 编写此文本 我尝试使用一些 unicode 字符 例如Unicode字符集 黑圈 U 25CF or Unicode字符集 黑色大圆圈 U 2B24 但它们需要一些样式 即尺寸与实际尺寸不同 o 并且在某些系统和字体上显
  • 如何更改 stackplot、matplotlib 的调色板?

    我希望更改 stackplot 的调色板 使大区域具有浅色 较小区域具有明亮颜色 import numpy as np import pandas as pd import matplotlib pyplot as plt import s
  • 循环总结大于 R 中主题的观察结果

    我有一个看起来像这样的数据集 set seed 100 da lt data frame exp c rep A 4 rep B 4 diam runif 8 10 30 对于数据集中的每一行 我想总结大于特定行中的直径并包含在级别 exp
  • 如何在空手道中使用特定于环境的测试数据

    我想知道在各种环境中执行测试时如何在运行时使用不同的数据集 我已阅读文档 但无法找到针对这种情况的最佳解决方案 要求 在 QA 环境中执行测试 然后在 SIT 中执行相同的测试 但是 在请求中使用不同的数据 例如 customerIds 这
  • 如何在AngularJS中渲染之前编译过滤器的结果

    我有一个网络应用程序 用户可以在其中输入 富文本 内容 tinymce 并可能输入超链接 在我的角度应用程序中 我使用 ng bind html unsafe 在 div 中渲染它以保留所有格式 我想将 ng click 附加到该内容中的任
  • 哪个事件被触发? (javascript,输入字段历史记录)

    我有一个空的文本字段 但是当您单击它时 它会显示以前输入的一些建议 如果我用鼠标选择其中一个 JavaScript 事件 会触发哪个 JavaScript 事件 我正在使用 jquery 1 6 2 来绑定侦听器 view textRegi
  • 如何从 tfrecords 目录创建 tf.data.dataset?

    我的数据集有不同的目录 每个目录对应一个类 每个目录中有不同数量的 tfrecord 我的问题是如何从每个目录中采样 5 个图像 每个 tfrecord 文件对应一个图像 我的另一个问题是如何对其中 5 个目录进行采样 然后从每个目录中采样
  • MS Access - Docmd.OpenReport

    我正在尝试打开一个包含两个日期 dateFrom 和 dateTo 之间的日期字段的报告 该日期字段来自表单中的文本框 共享的尝试不会起作用 第一个 因为日期应该以特定方式格式化 YYYY MM DD 或 MM DD YYYY 并用 值 而
  • 如何理解vertical-align: -0.125em和vertical-align: middle的区别?

    我看到代码了vertical align 0 125em 并思考它和vertical align middle vertical align middle means 将元素的中间与基线加上父级 x 高度的一半对齐 所以你需要找到middl
  • Chrome 中的“Access-Control-Allow-Origin 不允许 Origin null”。为什么? [复制]

    这个问题在这里已经有答案了 我正在开发一些 Javascript 以在我的 PC 上本地运行 我正在使用 jQuery CSV 插件 http plugins jquery com project csv 将 csv 文件加载到 javas
  • 将函数名称存储在数据库中然后执行

    我正在制作一种 CMS 系统 该系统在网页的各个部分中工作 并将每个部分作为不同的条目存储到 MySQL 数据库的表中 当用户第一次设置页面时 PHP 脚本调用一个名为addsection name content 将该部分添加到数据库中
  • Delphi:等待bat脚本运行结束

    我有bat 文件 可以进行一些操作 如何从 Delphi 运行该文件并等待 直到它停止 像这样的东西 procedure TForm1 Button1Click Sender TObject begin Starting bat file