首页
社区
课程
招聘
[求助]如何用WindowsSDK方式分析路径?
发表于: 2009-4-10 21:53 20518

[求助]如何用WindowsSDK方式分析路径?

2009-4-10 21:53
20518
例如下面这个路径字符串,怎么得到最后的文件名部分?

C:\ChildrenAvRepository\“桜井りあ”\MAX GIRLS 7 080711 伊東遥 栗林里莉 黒木アリサ\MAX GIRLS 7 080711 伊東遥 栗林里莉 黒木アリサ.jpg

热切期盼得到大家的点拨。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
2
栗林里莉



伊東遥


黒木アリサ


桜井りあ
2009-4-10 22:29
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个不好弄吧.呵呵.不是人名.是文件名.拜托大哥严肃点.

大哥教个方法吧.求求你了.
2009-4-10 22:30
0
雪    币: 304
活跃值: (507)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
2个api行不行?
        lea        esi,szBuf
        invoke        PathRemoveFileSpec,esi
        invoke        lstrlen,esi
        add        esi,eax
        inc        esi
        invoke        MessageBox,0,esi,0,0
2009-4-10 22:39
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
点子很好.但是不可行.
不对.API中直接错误.
2009-4-10 22:43
0
雪    币: 304
活跃值: (507)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
靠还我处女贴。
2009-4-10 22:45
0
雪    币: 407
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哇,LS比我还强
2009-4-10 23:02
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你的处女贴.靠.还真是.

2006年入伙的.膜拜.6体投地.佩服.
2009-4-10 23:02
0
雪    币: 424
活跃值: (1819)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
PathFindFileName("C:\\Folder\\File.txt");
2009-4-10 23:34
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
great work.
thanks.
2009-4-10 23:40
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
11
要解释有中文名的路径,最好方法是将他转换成unicode编码再获取。
.data
        szPath db 'C:\ChildrenAvRepository\“桜井りあ”\MAX GIRLS 7 080711 伊東遥 栗林里莉 黒木アリサ\MAX GIRLS 7 080711 伊東遥 栗林里莉 黒木アリサ.jpg',0
        szFileName db 256*2 dup(0)
.code
start:
        lea esi,szPath
        lea edi,szFileName
        xor edx,edx
        ; 下面的循环是将路径编码成unicode编码的格式(注:只是unicode编码格式,并不是标准的unicode编码,要转换成标准的unicode编码必须使用MultiByteToWideChar函数转换才是标准的)。
        .while BYTE ptr [esi+edx]
                .if BYTE ptr [esi+edx] <= 127
                        movzx eax,BYTE ptr [esi+edx]
                        inc edx
                .else
                        mov ax,WORD ptr [esi+edx]
                        add edx,2
                .endif
                mov WORD ptr [edi],ax
                add edi,2
        .endw
        lea edi,szFileName
        invoke lstrlenW,edi
        shl eax,1
        mov cl,'\'
        movzx ecx,cl
        mov dx,WORD ptr [edi+eax-2]
        ; 从这里开始从路径后面开始判断获取文件名,以'\'字符为分割符判断。
        .while (dx != cx) && eax
                sub eax,2
                mov dx,WORD ptr [edi+eax-2]
        .endw
        lea edi,[edi+eax]
        invoke MessageBoxW,0,edi,NULL,MB_OK
        invoke ExitProcess,NULL
        ret
end start
2009-4-11 09:44
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这么复杂.
MessageBoxW前还得搞成正规的Unicode。

嗯~~~~
强制搜索标识比较强.
膜拜版主.

biggest maximum thanks to you!

祝您万寿无疆.
2009-4-11 10:36
0
雪    币: 217
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主的路径太强了。。。。
2009-4-11 13:05
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
14
还以上错论坛了

哦耶.哈哈哈哈..
2009-4-11 13:06
0
雪    币: 304
活跃值: (507)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
PathRemoveFileSpec修改了字符串
你不能用.const定义
这个定义是只读的

PathFindFileName
居然没有看见这个api
学习了。。
2009-4-11 20:09
0
游客
登录 | 注册 方可回帖
返回
//