Win32汇编如何读取INI文件中的中文键名和键值

pcblackwolf 2008-04-07 02:17:30
对话框是用RadASM自带的设计器设计的.dlg文件,相关代码我附上:

;获取完整路径
invoke GetCurrentDirectory,MAX_PATH,addr szConfigName
mov esi,offset szConfigName
invoke lstrlen,esi
mov ecx,offset szConfig
.if byte ptr [esi+eax-1]=='\'
inc esi
.endif
invoke lstrcat,esi,ecx

invoke SendMessage,hWinListTH,LB_RESETCONTENT,0,0

invoke GetPrivateProfileSection,addr szSection,\
addr szBuffer,sizeof szBuffer,addr szConfigName ;
mov ebx,offset szBuffer
.while byte ptr [ebx]
;---------
;获取键值
;---------
mov esi,ebx
invoke lstrlen,esi
add esi,eax
.while byte ptr [esi]!="="
dec esi
.endw
inc esi
invoke lstrcpy,addr szValue,esi
;---------
;获取键名
;---------
mov edi,ebx
invoke lstrlen,edi
add edi,eax
.while byte ptr[edi]!="\"
dec edi
.endw
inc edi
invoke lstrcpy,addr szKey,edi

invoke SendMessage,hWinListTH,LB_ADDSTRING,0,addr szValue
invoke SendMessage,hWinListTH,LB_SETITEMDATA,eax,addr szKey
invoke lstrlen,ebx
add ebx,eax
inc ebx
.endw
这段代码在另一个程序中正常,不过对话框是我直接在.RC文件里创建的,请教问题可能在哪些地方??
...全文
116 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-04-07
  • 打赏
  • 举报
回复
同上
智能卡_Snooper 2008-04-07
  • 打赏
  • 举报
回复
楼主为何没用getprivateprofilestring。
cnzdgs 2008-04-07
  • 打赏
  • 举报
回复
可以,不过比较麻烦,需要用程序写代码,如果在目标进程中分配一块内存,写如LoadLibrary和FreeLibray等代码,然后创建远程线程。
pcblackwolf 2008-04-07
  • 打赏
  • 举报
回复
用中文只是在实现时是加减2个字节,其他也一样了
把不能用的INI文件的内容复制到可以用的那儿就能用了
还想请教个问题:
我远程注入DLL后想让DLL在工作完后自己来卸载自己,这样能实现吗?
cnzdgs 2008-04-07
  • 打赏
  • 举报
回复
如果名称用英文,ANSI和Unicode都不会有问题,名称用中文的没有试过,感觉也不该有问题,可能是文件内容有错。
pcblackwolf 2008-04-07
  • 打赏
  • 举报
回复
谢谢楼上两位!
我把ini文件删了,从可以的项目中复制了一个过来,就可以了,问题解决了,就是不明白为什么
会不会和保存时的编码有关系啊?
pcblackwolf 2008-04-07
  • 打赏
  • 举报
回复
回楼上的,试用过了,先用getprivateprofilestring,再用getprivateprofilesection,只是还是没有成功就使用以前用的一个获取路径的来了!
相关推荐
发帖
汇编语言

2.1w+

社区成员

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
帖子事件
创建了帖子
2008-04-07 02:17
社区公告
暂无公告