关于delphi调用外部exe程序的问题 现在我在写一个程序,实现点击然后调用外部写好的一个exe程序。 程序是调用了,但是这个程序首先是一个登陆窗口。调用的时候报错 ‘连接数据库失败,无效的用户名口令。’但是单独双击运行这个程序的时候是没有错的。不知道什么原因。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 winexec(pchar(程序名),sw_show)就可以了。 就是个exe文件,当然还有数据库配置文件之类的。双击就弹出用户名 密码 的登录框。我调用的时候提示登录数据库的用户名密码。。按里说不应该啊 。单独运行的时候是没有问题的啊。 单独运行出现登录对话框与别的程序调用运行不出现对话登录框,这种方法可以在程序oncreate中检查参数,或者读取内存中映射信息。如果是带参数运行,则检查参数,如果是采用内存映射,则检查内存映射信息,如果有,则不出现登录对话框,反之直接运行。最近我在做类似功能时,就采用内存映射的方法。例:在A程序中调用B程序,在A程序中将用户信息用内存映射的方法,在B程序中检查并读取,但如果B程序是独立运行,则B程序运行时就显示登录窗体,这样安排,是为了让B程序既可以被调用运行,也可以单独运行。 那运行此exe前,应该先进入它的子目录,再运行或者执行一个bat:d:cd d:\dir2other.exe 你的意思是先创建一个Bat内容是进入到这个调用的目录 1. bat cd d:\bin然后在应用程序里先调用这个Bat ShellExecute(handle, 'open ', Pchar( 'c:\1.Bat '), nil, nil,SW_ShowNormal);然后在调用程序: shellExecute(handle, 'open ', Pchar( 'd:\bin\myprocess.exe '), nil, nil,SW_ShowNormal);是这样么? 先创建一个Bat内容是进入到这个调用的目录 1. bat d: cd d:\bin other.exe然后在应用程序里调用这个Bat ShellExecute(handle, 'open ', Pchar( 'c:\1.Bat '), nil, nil,SW_ShowNormal);不必调用程序了 非常感谢。貌似可以了。总结一下:我把调用的程序放在了D盘。bat文件也在D盘。都在D盘下。然后在程序里调用这个bat文件就可以正常登陆了。貌似bat 文件必须和调用的程序放在一个目录底下才能找到。没想到一个调用程序,还和目录有关,真是很感谢sz_haitao。至少肯定没这么快就能解决。明天在正式环境试了在给分哦。 貌似bat 文件必须和调用的程序放在一个目录底下才能找到——如果bat里有d:,就先切换盘符了没想到一个调用程序,还和目录有关——这可能与被调程序需要访问它的工作目录有关 查询出来的数据查出来后,做数据排序标识,标识在新例显示 一个简单的变量赋值问题,基本功,在线等 D8中New->VCL Forms Application和 Windows Forms Application有啥区别? 急!关于delphi 下sql的简单问题! 关于TREEVIEW的问题 InstallShield里卸载项应怎么加入? 在这种情况下怎样实现登录到服务器 皮肤制作的过程? ADO的事务处理问题 请教delphi怎么调用interbase数据库? 求数据库高手!!! delphi dbgrideh的checkbox怎么就点不上呢
如果是带参数运行,则检查参数,如果是采用内存映射,则检查内存映射信息,如果有,则不出现登录对话框,反之直接运行。最近我在做类似功能时,就采用内存映射的方法。
例:在A程序中调用B程序,在A程序中将用户信息用内存映射的方法,在B程序中检查并读取,但如果B程序是独立运行,则B程序运行时就显示登录窗体,这样安排,是为了让B程序既可以被调用运行,也可以单独运行。
那运行此exe前,应该先进入它的子目录,再运行
或者执行一个bat:
d:
cd d:\dir2
other.exe
1. bat
cd d:\bin
然后在应用程序里先调用这个Bat
ShellExecute(handle, 'open ', Pchar( 'c:\1.Bat '), nil, nil,SW_ShowNormal);
然后在调用程序:
shellExecute(handle, 'open ', Pchar( 'd:\bin\myprocess.exe '), nil, nil,SW_ShowNormal);
是这样么?
1. bat
d:
cd d:\bin
other.exe
然后在应用程序里调用这个Bat
ShellExecute(handle, 'open ', Pchar( 'c:\1.Bat '), nil, nil,SW_ShowNormal);
不必调用程序了
总结一下:我把调用的程序放在了D盘。bat文件也在D盘。都在D盘下。然后在程序里调用这个bat文件就可以正常登陆了。貌似bat 文件必须和调用的程序放在一个目录底下才能找到。没想到一个调用程序,还和目录有关,真是很感谢sz_haitao。至少肯定没这么快就能解决。
明天在正式环境试了在给分哦。
——如果bat里有d:,就先切换盘符了没想到一个调用程序,还和目录有关
——这可能与被调程序需要访问它的工作目录有关