如何在Delphi程序中调用执行外部exe程序?(100分)

  • 主题发起人 主题发起人 zmlv
  • 开始时间 开始时间
Z

zmlv

Unregistered / Unconfirmed
GUEST, unregistred user!
我碰到一个问题,在Delphi程序中要调用并运行一个外部的exe可执行文件,不知道<br>该怎样办,有那位高手知道请指点指点,不胜感激!
 
可以用 shellexecute 函数。<br>&nbsp; shellexecute(self.handle, nil, 'net.exe', 'start messenger', nil, SW_HIDE);<br>在用之前加上shellapi引用。<br>
 
shellExec 需要uses shellapi;
 
winexec('command.com',1) &nbsp;也可以
 
来晚一步,同意楼上
 
补充一下,在WIN2000下运行DOS程序要建立批处理文件执行。
 
WinExec(PChar('被调用的.exe'),1)<br>要强制类型转换一下,不然会报错,类型不符。<br>如果直接写个可执行文件的名字,需要这个被调用的可执行文件和你的project在同一个目录。<br>不然的话,就要写清楚路径名。
 
最好用 shellexecute 函数。<br>procedure ShellExec(handle:HWND;lpOperation,execname,workparam,workpath:string;ShowCmd:Integer);<br>var rc:integer;<br>begin<br>&nbsp; rc:=ShellExecute(handle,PChar(lpOperation),pchar(execname),PChar(workparam),PChar(workpath),ShowCmd);<br>&nbsp; if rc&gt;1 then<br>&nbsp; case rc of<br>&nbsp; &nbsp; &nbsp;0: showmessage('系统内存溢出!');<br>&nbsp; &nbsp; &nbsp;ERROR_FILE_NOT_FOUND: showmessage('指定文件没有找到!');<br>&nbsp; &nbsp; &nbsp;ERROR_PATH_NOT_FOUND: showmessage('指定路径没有找到!');<br>&nbsp; &nbsp; &nbsp;ERROR_BAD_FORMAT: showmessage('非系统.EXE 文件格式或非指定图象格式!');<br>&nbsp; &nbsp; &nbsp;SE_ERR_ACCESSDENIED: showmessage('操作系统否认接近指定文件!');<br>&nbsp; &nbsp; &nbsp;SE_ERR_ASSOCINCOMPLETE: showmessage('文件名联合不完全的或无效的!');<br>&nbsp; &nbsp; &nbsp;SE_ERR_DDEBUSY: showmessage(' DDE事务不能被完成因为其他-动态数据交换交易正在进行!');<br>&nbsp; &nbsp; &nbsp;SE_ERR_DDEFAIL: showmessage(' DDE事务失败!');<br>&nbsp; &nbsp; &nbsp;SE_ERR_DDETIMEOUT: showmessage(' DDE事务不能被完成因为请求超时.');<br>&nbsp; &nbsp; &nbsp;SE_ERR_DLLNOTFOUND: showmessage('指定动态链接库没被发现.');<br>&nbsp; &nbsp; &nbsp;SE_ERR_NOASSOC: showmessage('没有应用与有关给文件扩展名.');<br>&nbsp; &nbsp; &nbsp;SE_ERR_OOM: showmessage('没有足够存储器完成操作.');<br>&nbsp; &nbsp; &nbsp;SE_ERR_SHARE: showmessage('共享错误发生.');<br>&nbsp; end;<br>end;<br><br>
 
来晚乐!
 
问题:如何执行外部程序 ( 积分:50, 回复:3, 阅读:29 )<br>分类:Windows API ( 版主:amo, cAkk ) &nbsp;<br>来自:cao192, 时间:2001-12-25 14:48:00, ID:811264 [显示:小字体 | 大字体] &nbsp;<br>执行外部EXE文件<br>&nbsp;<br>&nbsp;<br>来自:卷起千堆雪tyn, 时间:2001-12-25 14:53:00, ID:811277 <br>uses ShellAPI;<br><br>ShellExecute(GetDesktopWindow, 'open', '你的外部应用程序的路径', nil, nil, 0);<br><br><br><br>&nbsp;<br>&nbsp;<br>来自:free_knight, 时间:2001-12-25 14:57:00, ID:811301 | 编辑 <br>uses WinProcs; &nbsp; <br>&nbsp;..... &nbsp; <br>begin &nbsp; <br>&nbsp; WinExec(......); &nbsp; <br>.......... &nbsp;<br>end. &nbsp; <br><br>和调用Pascal库函数没什么两样。<br>&nbsp; &nbsp;<br>例如:<br>WinExec('c:/windows/calc.exe',SW_SHOWNORMAL); //启动计算器<br>函数原型为:<br>UINT WinExec(<br>LPCSTR lpCmdLine, // address of command line <br>UINT uCmdShow // window style for new application <br>); <br><br>&nbsp;<br>&nbsp;<br>来自:cao192, 时间:2001-12-25 15:22:00, ID:811367 <br>多人接受答案了<br>&nbsp;<br>&nbsp;<br>
 
感谢大家相助!
 
后退
顶部