从Addin检索VB6工作目录

时间:2014-07-19 13:23:25

标签: vb6

我google了很多,并在我的机器上使用了regedit,但是为了有用, 所以我在这里问:

我需要从Visual Basic 6 Addin(通过代码)检索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没有 经过一些测试,无论是工作还是失败,显然都是随机的 为了发现错误,我创建了一个仅使用 CurDir GetCurrentDirectory 的VB6插件, 以及 GetCurrentProcess GetCurrentDirectory 以检索当前目录。

它将以上值添加到App.Path以及它是否在VB IDE或 作为编译的DLL。

然后我在各个地方复制了addin项目文件夹,在IDE模式下启动,然后编译。

我不会打扰你,包括完整的日志文件。 请接受我的说法,即所有三种方法都会始终返回相同的值。

简而言之,事实证明返回的值取决于addin项目 目录位置。

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

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

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

@ D.Ddgg:

  

活动路径末尾的目录称为当前目录   目录;它是活动应用程序所在的目录   开始,除非明确更改。应用程序可以确定   通过调用GetCurrentDirectory,该目录是最新的   功能。

看起来活动路径会根据运行模式而改变 你觉得怎么样?
我错过了什么吗?

0 个答案:

没有答案