📄 registry.asm
字号:
;**************Registy functions**********************
_SetRegKeySz proc lpszKeyName,lpszValueName,lpszString,dwSize
local @hKey,@dwSize
invoke lstrlen,lpszString
inc eax
mov dwSize,eax
invoke RegCreateKey,HKEY_LOCAL_MACHINE,lpszKeyName,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,lpszValueName,NULL,\
REG_SZ,lpszString,dwSize
invoke RegCloseKey,@hKey
.endif
ret
_SetRegKeySz endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 读取字符型键值
; 参数:键名指针,键值名指针,接收键值字符串指针
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetRegKeySz proc lpszKeyName,lpszValueName,lpszBuffer,dwSize
local @hKey
local @dwReturn
pushad
mov @dwReturn,-1
mov eax,lpszBuffer
mov byte ptr [eax],0
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,lpszKeyName,NULL,\
KEY_QUERY_VALUE,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegQueryValueEx,@hKey,lpszValueName,NULL,NULL,\
lpszBuffer,addr dwSize
.if eax == ERROR_SUCCESS
mov @dwReturn,eax
.endif
invoke RegCloseKey,@hKey
.endif
popad
mov eax,@dwReturn
ret
_GetRegKeySz endp
_SetRegKeyDw proc lpszKeyName,lpszValueName,dwValue
local @hKey
invoke RegCreateKey,HKEY_LOCAL_MACHINE,lpszKeyName,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,lpszValueName,NULL,\
REG_DWORD,addr dwValue,4
invoke RegCloseKey,@hKey
.endif
ret
_SetRegKeyDw endp
_GetRegKeyDw proc lpszKeyName,lpszValueName
local @dwTemp,@hKey,@dwSize,@dwValue
local @dwReturn
pushad
mov @dwReturn,-1
mov @dwSize,4
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,lpszKeyName,NULL,\
KEY_QUERY_VALUE,addr @hKey
.if eax == ERROR_SUCCESS
mov eax,REG_DWORD
mov @dwTemp,eax
invoke RegQueryValueEx,@hKey,lpszValueName,NULL,\
addr @dwTemp,addr @dwValue,addr @dwSize
.if eax == ERROR_SUCCESS
push @dwValue
pop @dwReturn
.endif
invoke RegCloseKey,@hKey
.endif
popad
mov eax,@dwReturn
ret
_GetRegKeyDw endp
_InitRegistKey proc hWnd:dword
RGB 236,255,42
mov BackColor,eax
mov RepeatFlag,1
mov Counter,1
INVOKE _SetRegKeyDw,addr szKeyName,addr szKeyBackColor, BackColor
INVOKE _SetRegKeyDw,addr szKeyName,addr szKeyRepeatFlag,RepeatFlag
INVOKE _SetRegKeyDw,addr szKeyName,addr szKeyCounter, Counter
push 0
pop iIndex
invoke _SetRegKeyDw,addr szKeyPlayList,ADDR szMenuSet, iIndex
invoke CheckDlgButton,hWnd,IDC_REPEAT,BST_CHECKED
ret
_InitRegistKey endp
_SetRegistKey proc
INC Counter
INVOKE _SetRegKeyDw,addr szKeyName,addr szKeyBackColor, BackColor
INVOKE _SetRegKeyDw,addr szKeyName,addr szKeyRepeatFlag,RepeatFlag
INVOKE _SetRegKeyDw,addr szKeyName,addr szKeyCounter, Counter
invoke _SetRegKeyDw,addr szKeyPlayList,addr szMenuSet, iIndex
mov ecx,1
.while ecx<=iIndex
push ecx
mov TempNum,ecx
invoke _SetRegKeySz,addr szKeyPlayList,addr TempNum,PlayList[ecx*4-4],MAXSIZE
pop ecx
inc ecx
.endw
ret
_SetRegistKey endp
_GetRegistKey proc hWnd:dword
invoke _GetRegKeyDw,addr szKeyName,addr szKeyBackColor
.if eax!=-1
mov BackColor,eax
.else
invoke _InitRegistKey,hWnd
.endif
invoke _GetRegKeyDw,addr szKeyName,addr szKeyRepeatFlag
.if eax!=-1
mov RepeatFlag,eax
.if eax==0
invoke CheckDlgButton,hWnd,IDC_REPEAT,BST_UNCHECKED
.ELSE
invoke CheckDlgButton,hWnd,IDC_REPEAT,BST_CHECKED
.endif
.else
invoke _InitRegistKey,hWnd
.endif
invoke _GetRegKeyDw,addr szKeyName,addr szKeyCounter
.if eax!=-1
mov Counter,eax
.else
invoke _InitRegistKey,hWnd
.endif
invoke _GetRegKeyDw,addr szKeyPlayList,addr szMenuSet
mov iIndex,eax
mov ecx,1
.while ecx<=iIndex
mov TempNum,ecx
push ecx
push ecx
invoke _GetRegKeySz,addr szKeyPlayList,addr TempNum,addr Buffer,MAXSIZE
invoke SysAllocString,addr Buffer
pop ecx
lea edi,PlayList
mov [edi+ecx*4-4],eax
pop ecx
inc ecx
.endw
ret
_GetRegistKey endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -