VS2010的VB里面GetPrivateProfileString不好使了?

我原来是玩VB6的,但是VB6在Win7下面看着很难受,于是转入VB2010(是在VS2010Ultimate里面的)但是在VB2010里GetPrivateProfil... 我原来是玩VB6的,但是VB6在Win7下面看着很难受,于是转入VB 2010(是在VS2010 Ultimate里面的)
但是在VB2010里GetPrivateProfileString读不到数据。lpReturnedString里面啥也没有。代码如下:
Function GetDir(ByVal DirType As DirType) As String
If Right(Application.StartupPath, 1) <> "\" Then Pt = Application.StartupPath & "\"
Else
Pt = Application.StartupPath
End If
If Dir(Pt & "setting.ini") <> "" Then
If DirType = modMain.DirType.Dest Then
DestDir = Space(256)
GetPrivateProfileString("Global", "Dest", "", DestDir, 255, Pt & "setting.ini")
GetDir = Trim(DestDir)
ElseIf DirType = modMain.DirType.ROFS Then
DestDir = Space(256)
GetPrivateProfileString("Global", "ROFS", "", DestDir, 255, Pt & "setting.ini")
GetDir = Trim(DestDir)
Else
GetDir = ""
End If
Else
IO.File.Create(Pt & "setting.ini")
GetDir = ""
End If
End Function

那个Pt & "setting.ini",在即时窗口里查询到是"I:\VBProgs\Copier\Copier\Copier\bin\Debug\setting.ini"

这个setting.ini的内容是(这个文件的位置肯定是对的,因为在开始——运行里面可以用这个路径打开它):
[Global]
Dest=E:\
ROFS=F:\

但是运行时DestDir变量里面只有一堆空格。GetDir函数返回空。
一样的用法,在VB6里面就很好使。而且INI文件的路径还带空格。
是VB2010在哪些地方发生了变化吗?这个工程我选的是.NET Framework 2.0
这是模块里的函数,里面的所有变量都在模块的头部用Public已经声明过

谢谢stmcatl的回答,现在:
1.还是那个VS编译的程序,XP下面获取不到
2.不是同一个程序,但是用法相同,VB6在Win7和XP下都能获取到
3.现在它一直就在那里,我都没动它了
4.写什么它就返回什么(就好像没有那个INI似的)

如果把lpApplicationName写成vbNullString,返回的东西好像是win.ini里面的小节名称(不确定,反正有一大堆)

问题解决了:用VB6创建一个ActiveX DLL,把这整个函数连同设计的枚举、变量全部搬移过去,然后在VS2010添加引用就完成了……
展开
 我来答
大脸猫脸大252
2010-08-04 · TA获得超过193个赞
知道小有建树答主
回答量:261
采纳率:0%
帮助的人:162万
展开全部
1. 在xp 环境下 看是否能获取到。
2. 在vb6.0 下 看能否获取到。
3. ini文件 不用 刻意去Create 当你往里写内容时,若不存在ini文件就直接创建了。
4. GetPrivateProfileString为第三个参数参数写个值,
如 GetPrivateProfileString("Global", "Dest", "没有找到", DestDir, 255, Pt & "setting.ini")
然后再将DestDir显示出来。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式