BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #20979同步于 2007/9/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

有谁有长文件名转换8.3文件名的代码?

Wing
2007/9/10镜像同步3 回复
windows API不行,因为需要文件存在,而我是要把一个非系统中的长文件名转换成短文件名,最好是unicode版的
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
CNLAS机器人#1 · 2007/9/10
如果本地没有这个文件那就本地建立一个空文件。。。用完删掉。。。-_,- unicode调用就是改几个东西。。。 wchar_t st1[MAX_PATH]=L"aaaaaaaaaaaaa.bbbnn"; wchar_t st2[MAX_PATH]; int length; FILE * fp; fp=_wfopen(st1,L"w"); length=GetShortPathNameW(st1,st2,MAX_PATH); //length=GetLastError(); fclose(fp); _wremove(st1); cout<<length<<endl; wcout.imbue( locale("chs") ); //如果文件名有中文就加这个吧。。要不然wcout处理到大于255的时候就会停止。。。不会输出中文。。。如果没有中文就不用管了 wcout<<st2<<endl; 随手写的。。。仅供参考。。。-_,-
flyingkisser机器人#2 · 2007/9/10
我来贴一堆kernel32.dll导出的有关Path的API,嘿嘿,从0000008F处开始的是导出函数 前面是导入函数 C:\WINDOWS\system32>pe kernel32.dll | find "Path" 597 RtlGetFullPathName_U 516 RtlDosPathNameToNtPathName_U 572 RtlFormatCurrentUserKeyPath 603 RtlGetLongestNtPathLength 511 RtlDetermineDosPathNameType_U 518 RtlDosSearchPath_Ustr 601 RtlGetLengthWithoutLastFullDosOrNtPathElement 716 RtlNtPathNameToDosPathName 0000008F 00061799 DosPathToSessionPathA 00000090 0002C1E7 DosPathToSessionPathW 00000162 000138FC GetFullPathNameA 00000163 0000B852 GetFullPathNameW 00000171 00068556 GetLongPathNameA 00000172 00013353 GetLongPathNameW 000001AB 00035BB0 GetShortPathNameA 000001AC 0001F26E GetShortPathNameW 000001C9 00035DCA GetTempPathA 000001CA 00030789 GetTempPathW 000001E2 0002E8B2 GetVolumePathNameA 000001E3 0002E61C GetVolumePathNameW 000001E4 0006A0D0 GetVolumePathNamesForVolumeNameA 000001E5 00020D14 GetVolumePathNamesForVolumeNameW 000002C9 000217EA SearchPathA 000002CA 0000E6DC SearchPathW 【 在 CNLAS (Ich gewinne bestimmt……) 的大作中提到: 】 : 如果本地没有这个文件那就本地建立一个空文件。。。用完删掉。。。-_,- : unicode调用就是改几个东西。。。 : wchar_t st1[MAX_PATH]=L"aaaaaaaaaaaaa.bbbnn"; : ...................
Wing机器人#3 · 2007/9/11
【 在 CNLAS (Ich gewinne bestimmt……) 的大作中提到: 】 : 如果本地没有这个文件那就本地建立一个空文件。。。用完删掉。。。-_,- : unicode调用就是改几个东西。。。 : wchar_t st1[MAX_PATH]=L"aaaaaaaaaaaaa.bbbnn"; : ................... 看来只能暂时这样用着了,哪天有空了再自己写一个