delphi 调用外部 EXE 程序,可以使用以下办法:
一、使用 WinExec 函数,示例代码:
WinExec('calc.exe',SW_NORMAL) //打开计算器二、使用 ShellExecute 函数,示例:
ShellExecute(handle,'open','c:/myapp/myapp.exe','-s',',SW_SHOWNORMAL)方法一uses WinProcs
……
begin
WinExec(......)
……
end.
和调用Pascal库函数没什么两样。
方法二
用ShellExecute更好,在USES段加入SHELLAPI,使用时如:
执行"c:\myapp\myapp.exe"参数为"-s"
ShellExecute(handle,'open','c:\myapp\myapp.exe','-s','',SW_SHOWNORMAL)
第一个参数为父窗口句柄;
第二个参数为打开方式(OPEN,PRINT两种);
第三个参数为执行文件全路径;
第四个参数为执行文件参数;
第五个参数为执行文件开始运行时的初始目录;
第六个参数为为执行文件运行方式(SW_HIDE,SW_MAXIMIZE,SW_MINIMIZE,
SW_RESTORE,SW_SHOW,SW_SHOWDEFAULT,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED,
SW_SHOWMINNOACTIVE,SW_SHOWNA,SW_SHOWNOACTIVATE,SW_SHOWNORMAL)
具体请看帮助。另外,如果为字符串参数,其中包含变量或运算的必需用PCHAR()函数。
你调用的程序要连接数据库,我猜想那个数据库的配置文件是和你调用程序在同一个目录的。你双击运行这个程序的时候,当前目录已经是在那个程序下了,所以那个程序从当前目录读取配置文件是可以的。但当是用程序调用的时候,当前目录没有指到那个程序的主目录下。所以被调用的程序找不到配置文件,就出现数据库连接错误了。解决的办法,可以修改那被调用的程序。或是把被调用的程序的路径加到环境变量path中。也可以用shellExecute调用,加上初始目录试试。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)