如何在pb做的程序中运行另一个pb做的exe程序?急
现在有这样一个问题,我在当前pb做的A程序中运行pb做的B程序,我发现B程序在运行时候,取的路径仍让是A程序所在的路径,这样就会报错,不知哪位大哥遇到类似的问题,望指教下,多谢了啊……
[解决办法]
在程序的开始处加一段取注册表里存储该程序的路径键值的代码,
如果提取不成功,则获取该程序的绝对路径写入注册表.
但是要求第一次运行必须在程序所在路径里...
[解决办法]
这个问题,我做过
极为深入研究。
最好的办法,是用API函数好像是
getmodule,在B程序启动时
,可以获取B程序的名字(含路径),在这个返回的STRING中,查最右边“\”的位置,接着截字符串,取出B程序的路径。可接着调API函数,改当前路径为已取的B路径.
其实,你如果知道B的路径,可在B程序运行时,直接调API函数改。
赶紧给分吧。我本有程序,可惜没带在身边。
[解决办法]
可以修改B的情况下,
//以下函数用于取得当前应用名
Function uLong GetModuleFileNameA(long hinstModule, Ref String lpszPath, uLong cchPath) Library "kernel32.dll"
FUNCTION ulong SetCurrentDirectory(ref string lpPathName) LIBRARY "kernel32.dll" ALIAS FOR "SetCurrentDirectoryA"
B一进去,取得自己EXE的名字,再设置自己的所在目录为当前目录.
----------------------
不可以修改B的情况下,A先取得B所在目录(这个你一定取得到的)
run("b.exe")之前
SetCurrentDirectory//A自己设自己
run后,如果需要,再设回来