作者:情感顾问世界 | 来源:互联网 | 2023-05-16 22:14
我用的是Win2Kpro,用代码改变了注册表“HKEY_CURRENT_USER\ControlPanel\Desktop\”中的“ScreenSaveActive”为“1”,“SCRNSAVE.E
我用的是Win2Kpro,用代码改变了注册表“HKEY_CURRENT_USER\Control Panel\Desktop\”中的“ScreenSaveActive”为“1”,“SCRNSAVE.EXE”的值改写为windows根目录下的一个*.scr文件。这个屏保文件是用中文的,很长,比如“c:\windows\我的新屏保.scr”。
可是打开桌面的“属性”来确认,发现并没有改变当前屏保,重启PC也没有改变。可手动改变当前屏保的话,“SCRNSAVE.EXE”的值变为“c:\windows\我的新~1.scr”。在代码中设定为这样的短文件名也马上更改了当前屏保!
为什么?我怎么才能知道某个长文件名会变成什么样的短文件名?(我的新~1.scr? 我的新~2.scr? 我的新~3.scr?)
2 个解决方案
Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
获取指定文件的短路径名
Long,装载到lpszShortPath缓冲区的字符数量。如lpszShortPath的长度不足,不能容下文件名,就返回需要的缓冲区长度lpszLongPath --- String,指定欲获取短路径名的那个文件的名字。可以是个完整路径,或者由当前目录决定
lpszShortPath -- String,指定一个缓冲区,用于装载文件的短路径和文件名
cchBuffer ------ Long,lpszShortPath缓冲区长度
我怎么才能知道某个长文件名会变成什么样的短文件名?
在命令提示符下运行一下 dir /x就可以知道相应的短文件名了。
当然在程序里用GetShortPathName 就可以了。