从加载项检索VB6工作目录

从加载项检索VB6工作目录,vb6,Vb6,我在谷歌上搜索了很多,也在我的机器上使用了regedit,但为了有效, 所以我在这里问: 我需要通过代码从Visual Basic 6加载项检索VB6.exe工作目录的值 如果我记得清楚的话,默认情况下,这与可执行文件的目录相同 C:\Program Files x86\Microsoft Visual Studio\VB98\在我的计算机上Windows 7 Pro 64位 但可以通过右键单击VB6.exe快捷方式并在中键入所需的值来更改 “起始位置”字段 显然,没有办法从VBE类或VBIDE

我在谷歌上搜索了很多,也在我的机器上使用了regedit,但为了有效, 所以我在这里问:

我需要通过代码从Visual Basic 6加载项检索VB6.exe工作目录的值

如果我记得清楚的话,默认情况下,这与可执行文件的目录相同 C:\Program Files x86\Microsoft Visual Studio\VB98\在我的计算机上Windows 7 Pro 64位 但可以通过右键单击VB6.exe快捷方式并在中键入所需的值来更改 “起始位置”字段

显然,没有办法从VBE类或VBIDE中的任何其他类检索它

我想唯一的解决办法是从windows注册表中读取它,但哪个是正确的键

我在HKEY_CURRENT_USER\Software\Microsoft\Microsoft Visual Basic(保存IDE编辑器的TabWidth设置)和许多其他地方搜索了它。 我还做了一个完整的注册表搜索:没有运气

谁能给我一个提示

更新 抱歉耽搁了,但是我花了一些时间来测试这个东西

首先,我道歉:我过早下结论了

在第一次尝试中,rene的代码有效,而CurDir没有。 经过一些测试,两者都成功或失败,显然是随机的。 为了发现错误,我创建了一个VB6加载项,它使用CurDir,GetCurrentDirectory only, 以及GetCurrentProcess和GetCurrentDirectory来检索当前目录

它将上面的值记录到一个文件中,添加App.Path以及它是否在VB IDE中运行 作为已编译的DLL

然后我在不同的地方复制了addin项目文件夹,在IDE模式下启动每个文件夹,然后进行编译

我不会打扰你包括完整的日志文件。 请相信我的话,所有三种方法都会返回相同的值

简而言之,返回的值取决于addin项目 目录位置

如果目录位于VB工作目录的父路径下, 它在IDE或编译模式下返回正确的值

在另一种情况下,在IDE中运行时返回App.Path; 但是,如果编译,它将返回正确的值

在这种情况下,我们可以说rene和D.Ddgg的解决方案是等价的。 我感谢他们的帮助,但问题依然存在

@D.Ddgg:

活动路径末尾的目录称为当前目录 目录它是活动应用程序所在的目录 已启动,除非显式更改。应用程序可以确定 通过调用GetCurrentDirectory,哪个目录是当前目录 功能

活动路径似乎会根据运行模式而变化。 你觉得怎么样?
我遗漏了什么吗?

可能是harcode,但你不能做一个,然后VB有curdir函数。像这样的事情与注册表无关。我只是尝试了一下,效果很好@Ddgg:我试过的第一件事。它返回加载项本身的当前目录,而不是调用Visual Basic实例的当前目录。@rene:如果您回答,我将向上投票。如果我回答自己,我想我不能。