delphi 调用外部exe ,并等待调用程序运行结束

function TFmain.RunWait(FileName: string; Visibility: Integer): THandle;
var
  zAppName: array[0..512] of Char;
  zCurDir: array[0..255] of Char;
  WorkDir: string;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  try
        StrPCopy(zAppName, FileName);
        GetDir(0, WorkDir);
             StrPCopy(zCurDir, WorkDir);
             FillChar(StartupInfo, SizeOf(StartupInfo), #0);
             StartupInfo.cb := SizeOf(StartupInfo);
             StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
             StartupInfo.wShowWindow := Visibility;
            if not CreateProcess(nil, zAppName, nil, nil, false, Create_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
            begin
                result := 0;
                Exit;
             end
             else
             begin
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess, result);
        end;
    finally
    end;
end;

调用

procedure TFmain.Img_buyClick(Sender: TObject);
var
msg:String;
begin

Timer1.Enabled := False;

RunWait(‘cs_buy.exe‘,SW_SHOWMAXIMIZED);

Timer1.Enabled := True;

end;

其中 参数   Visibility 取值如下:

行号 参数 含义
1 SW_HIDE                        隐藏这个窗体,并激活其他窗体。
2 SW_MAXIMIZE                最大化指定的窗体。
3 SW_MINIMIZE                 最小化指定的窗体,并按顺序激活最上层的窗体。
4 SW_RESTORE               激活并显示窗体。如果窗体为最小化或者最大化,窗体恢复到原始大
                                          小和置。应用程序当恢复一个最小化的窗体时将指定标记。
5 SW_SHOW                      以当前的大小和位置激活并显示窗体。
6 SW_SHOWDEFAULT
7 SW_SHOWMAXIMIZED    激活并最大化显示窗体。
8 SW_SHOWMINIMIZED     激活并最小化现实窗体。
9 SW_SHOWMINNOACTIVE    最小化窗体,保持其激活状态。
10 SW_SHOWNA                     以当前状态显示窗体,保持其激活状态。
11 SW_SHOWNOACTIVATE   以当前的大小和位置显示窗体,并保持其激活状态。
12 SW_SHOWNORMAL 激活并显示一个窗体。如果窗体为最大化或者最小化,窗体恢复到原始的大小和位置。当窗体第一次显示的时候,应用程序记录标记

时间: 2024-10-24 20:03:13

delphi 调用外部exe ,并等待调用程序运行结束的相关文章

as3调用外部应用程序 as调用外部exe文件as3调用bat文件 未测试

private function callTest(event: Event): void{callExe("d:/a.exe");callBat("d:/a.bat");} private function callExe(extUrl: String): void{//使用静态属性 NativeApplication.nativeApplication 获取应用程序的 NativeApplication 实例//指定在关闭所有窗口后是否应自动终止应用程序. Na

windows下调用外部exe程序 SHELLEXECUTEINFO

本文主要介绍两种在windows下调用外部exe程序的方法: 1.使用SHELLEXECUTEINFO 和 ShellExecuteEx SHELLEXECUTEINFO 结构体的定义如下: 1 typedef struct _SHELLEXECUTEINFO { 2 DWORD cbSize; 3 ULONG fMask; 4 HWND hwnd; 5 LPCTSTR lpVerb; 6 LPCTSTR lpFile; 7 LPCTSTR lpParameters; 8 LPCTSTR lpD

c# 调用外部exe程序

c#调用外部exe程序,首先要 using System.Diagnostics; 然后开启一个新process System.Diagnostics.ProcessStartInfo p=null; System.Diagnostics.Process Proc; p = new ProcessStartInfo("nnnn.exe","参数"); p.WorkingDirectory = exepath;//设置此外部程序所在windows目录 p.Window

C# ASP.NET Webservice调用外部exe无效的解决方法

最近用asp.net做webservice,其中有个功能是调用执行外部的exe(类似cmd中执行),但执行Process.Start之后就没有结果,同样代码在winform下正常,折腾两天终于找到解决方法 本文参考了以下网页,十分感谢 http://bbs.csdn.net/topics/300053869 http://blog.163.com/[email protected]/blog/static/15737970200862331842368/ 环境:win7 sp1 64位 以及II

C#主线程等待子线程运行结束

佐左佑右 原文 C#主线程等待子线程运行结束 由于主程序中调用matlab的dll文件进行计算要用较长的时间,主界面会有很长时间的卡顿,造成的用户感受十分不好,因此我想在调用时,将调用放入子线程中,然后在主线程中弹出一个提示框,显示数据正在加载,等子线程运行结束后,主线程继续工作. 使用的是http://hi.baidu.com/oktell/item/5527f51d93abb4a5feded5a8中所提到的方法,用了这篇文章中的第一个方式,即不带参数的. 之后在其中加入了显示和关闭提示框的代

[实用工具]Unity调用外部EXE或Shell命令

版权所有,转载须注明出处!喜欢火影.喜欢Java.喜欢unity3D.喜欢游戏开发的都可以加入木叶村Q群:379076227 1.开门见山的需求有的时候,我们想把一些外部命令集成到unity中,比如,你想通过点击Unity中的一个按钮,就更新SVN(假设该项目是受SVN管理的).那么,就涉及到一个Unity调用外部可执行文件.bat/shell等.这个需求是挺常见的,也是不难实现的. 2.简单明了的实现我们先封装一个命令调用的函数: [C#] 纯文本查看 复制代码 ? 01 02 03 04 0

使用Qprocess的startDetached()方法调用外部exe程序

使用Qprocess的startDetached()方法,当前程序关闭时,调用的外部程序能够照常运行. QProcess::startDetached("C:\\Qt\\1.exe",QStringList()); 记得在头文件中添加#include <QProcess>,不然编译不通过

[转]VC中调用外部exe程序方式

本文转自:http://blog.sina.com.cn/s/blog_486285690100ljwu.html 目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了<vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess>,我全文转载一下,另外后面加点自己的总结(黑体部分,除了标题). 三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实

在Sql Server中调用外部EXE执行程序

exe sql server xp database dos 服务器 一.先开启xp_cmdshell 打开外围应用配置器—> 功能的外围应用配置器—> 实例名\Database Engine\xp_cmdshell—> 启用 二.解决方法 [sql] view plain copy use master Exec xp_cmdshell 'mkdir d:\csj' --调用dos命令创建文件夹,(执行成功了!) [sql] view plain copy Exec xp_cmdshe