当前位置: 代码迷 >> PB >> 怎么在pb做的程序中运行另一个pb做的exe程序?
  详细解决方案

怎么在pb做的程序中运行另一个pb做的exe程序?

热度:48   发布时间:2016-04-29 09:09:31.0
如何在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后,如果需要,再设回来
  相关解决方案