首先要在新建的程序中加入一个Module,在该Module中作如下声明:
DeclareFunctionGetWindowsDirectoryLib“kernel32”Alias“GetWindowsDirectoryA”(ByVallpBufferAsString,ByValnSizeAsLong)AsLong
这里的几个参数说明一下:lpBuffer是一个字符串,用以返回Windows的目录值(实际上是一个指针),这个目录值不带反斜杠的,比如C:\Windows,但有一种情况例外:当Windows安装在根目录下时返回反斜杠,比如C:\;第二个参数是前一个字串的长度,你得告诉系统为返回值预留的字串的最大长度(其实这个参数实在有些鸡肋的感觉);函数的返回值,在成功的情况下是目录字符串的长度,在不成功时返回NULL值,还有一种情况,就是返回值超出预留的串长度,那么该函数就返回实际值应有的长度。
函数说明完毕,可以看到,为了防止出错情况,函数引入了nSize参数,但只要使用下述经典的取目录代码,可保证程序平稳运行。
PublicFunctionMyGetWinDirectory()AsString
DimsBufferAsString
DimlSizeAsLong
sBuffer=String(255,0)
lSize=GetWindowsDirectory(sBuffer,Len(sBuffer))
sBuffer=Left(sBuffer,lSize)
sBuffer=sBuffer+“\”
MyGetWinDirectory=sBuffer
EndFunction
这里程序首先为字符预留了255Bytes,应该是足够了,不会有人用这么长的Windows目录名的,更重要的是超出255的长文件名Windows是不支持的;然后调用GetWindowsDirectory函数,通过返回值lSize截取缓冲区中有用的部分重新定义sBuffer;最后再加上反斜杠,形成完整的路径名。
现在你可以试一下你的新函数:在窗体Form1中加入一个文本框Text1,然后再加入一个命令键Command1,在Command1_Click()事件中加入以下代码:
PrivateSubCommand1_Click()
Text1=MyGetWinDirectory
MsgBoxText1
EndSub
最后运行程序,占击一下Command1,看一下实际的运行效果。
以上程序在中文Windows98,VB6中通过。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!