首先程序
Private Sub Form_Load()
If GetPrivateProfileInt("Set", "RegisterStart", 0, App.Path & "\ConFig.ini") = 0 Then
Shell "Regsvr32.exe " + App.Path + "\hmButton.ocx /s"
WritePrivateProfileString "Set", "RegisterStart", "1", App.Path & "\ConFig.ini"
End If
End Sub
.
上面一条是软件第一次运行时把相关的ocx文件注册一下过程。这样做的好处是不用每次启动都注册一下,搞花注册表。但也是有一个问题,假如放程序的文件夹发生了移动的话(如C盘去到了D盘)那么这样注册ocx的文件位置就会出现报错了。因此我想做一个假如发现ocx的注册文件位置改变的话,就再重新注册一次,不知到有否这样的办法与思路呢?
Private Sub Form_Load()
If GetPrivateProfileInt("Set", "RegisterStart", 0, App.Path & "\ConFig.ini") = 0 Then
Shell "Regsvr32.exe " + App.Path + "\hmButton.ocx /s"
WritePrivateProfileString "Set", "RegisterStart", "1", App.Path & "\ConFig.ini"
End If
End Sub
.
上面一条是软件第一次运行时把相关的ocx文件注册一下过程。这样做的好处是不用每次启动都注册一下,搞花注册表。但也是有一个问题,假如放程序的文件夹发生了移动的话(如C盘去到了D盘)那么这样注册ocx的文件位置就会出现报错了。因此我想做一个假如发现ocx的注册文件位置改变的话,就再重新注册一次,不知到有否这样的办法与思路呢?
首上面的问题可以在第一次启动软件时加上
WritePrivateProfileString "Set", "StartAddress", App.Path, App.Path & "\ConFig.ini"
把地址记下来,然后再读取数据出来比较现在的App.Path是否相同,即找到是否有改变过目录但我实际操作上完整的读取数据格式为下面这样.
Dim EmMyG As String
EmMyG = String(255, 0)
GetPrivateProfileString "Set", "StartAddress", "0", EmMyG, 256, App.Path & "\ConFig.ini"
但我发觉这样一来 EmMyG 这个变量变得很奇怪,即使如下面:
用 If EmMyG <> App.Path Then 这样的比较,明明用msgbox EmMyG , , App.Path 显示两者内容一样,但但都是通过了Then(也就是成立了两数据不对)
而且MsgBox EmMyG & vbCrLf & "\dsffffffffgdsfgdsa"
但实际上 "\dsffffffffgdsfgdsa" 这一段会没有显示出来,因此可能是 EmMyG 这个变量变奇怪了,但是我找不到方法解决...
我一直是这么做的...哈...
On Error Resume Next
if err<>0 then
Shell "Regsvr32.exe " + App.Path + "\hmButton.ocx /s"
end if
err.claer