INI文件的操作

    技术2026-08-18  15

    .386 .model flat,stdcall option casemap:none

    include     windows.inc include     kernel32.inc include     user32.inc includelib kernel32.lib includelib user32.lib include     shlwapi.inc    ;PathRemoveFileSpec 用 includelib shlwapi.lib

            .data hInstance       dd   ? szProfileName db   MAX_PATH dup (?) szFileName      db   '/test.ini',0 szAppName       db   'sec',0 szKeyName       db   'Key',0 szKeyValue      db   'value',0 szKeyName2      db   'hello',0 szKeyValue2     db   'good',0 szAppNameInt    db   'INTS',0 szKeyValueInt   db   'int',0 szBufInt        db   '%d',0 szBuffer        db   MAX_PATH DUP (?)         .code start: invoke GetModuleHandle,NULL         mov     hInstance,eax         invoke GetCurrentDirectory,MAX_PATH,addr szProfileName   ;获取路径方法一         mov     edi,offset szProfileName         invoke lstrlen,edi         mov     ecx,offset szFileName          ;ini文件名         .if     byte ptr [edi+eax-1] == '/'    ;当前路径的最后一个字符是 / 吗         inc ecx                ;是,则跳过ini文件名的/,防止生成两个//         .endif         invoke lstrcat,edi,ecx         ;连接组成完成路径名 ;注意这种方法         invoke MessageBox,NULL,edi,NULL,MB_OK                 invoke GetModuleFileName,NULL,addr szProfileName,MAX_PATH ;获取路径方法二              invoke PathRemoveFileSpec,addr szProfileName         mov     edi,offset szProfileName         invoke lstrlen,edi         mov     ecx,offset szFileName         .if     byte ptr [edi+eax-1] == '/'         inc ecx         .endif         invoke lstrcat,edi,ecx         invoke MessageBox,NULL,edi,NULL,MB_OK                 invoke WritePrivateProfileString,addr szAppName,addr szKeyName,addr szKeyValue,edi         invoke WritePrivateProfileString,addr szAppName,addr szKeyName2,addr szKeyValue2,edi         invoke GetPrivateProfileString,addr szAppName,addr szKeyName2,NULL,addr szBuffer,MAX_PATH,EDI         invoke MessageBox,NULL,addr szBuffer,NULL,MB_OK                 invoke GetCurrentProcessId                       ;写数值型         invoke wsprintf,addr szBuffer,addr szBufInt,eax ;转换为字符         invoke WritePrivateProfileString,addr szAppNameInt,addr szKeyValueInt,addr szBuffer,edi                 invoke GetPrivateProfileInt,addr szAppNameInt,addr szKeyValueInt,NULL,edi ;读数值型         invoke wsprintf,addr szBuffer,addr szBufInt,eax                        ;转化为字符         invoke MessageBox,NULL,addr szBuffer,NULL,MB_OK         invoke ExitProcess,NULL         end start

    最新回复(0)