📄 read_reg_pw.prg
字号:
func read_reg_pw
para isManage
*开启机码
DECLARE INTEGER RegOpenKey IN Win32API INTEGER nHKey,STRING cSubKey, INTEGER @nHandle
*建立机码
DECLARE INTEGER RegCreateKey IN Win32API INTEGER nHKey,STRING cSubKey, INTEGER @nHandle
*关闭开启的机码
DECLARE INTEGER RegCloseKey IN Win32API INTEGER nHKey
*删除机码
DECLARE INTEGER RegDeleteKey IN Win32API INTEGER nHKEY,STRING cSubkey
*删除某一机码下的值
DECLARE INTEGER RegDeleteValue IN Win32API INTEGER nHKEY,STRING cEntry
#DEFINE HKEY_CLASSES_ROOT -2147483648
#DEFINE HKEY_CURRENT_USER -2147483647
#DEFINE HKEY_LOCAL_MACHINE -2147483646
#DEFINE HKEY_USERS -2147483645
#DEFINE ERROR_SUCCESS 0
if isManage
retu ReadRegistryString(HKEY_LOCAL_MACHINE,"SOFTWARE\红虎工作室\yzkh","sapw")
else
retu ReadRegistryString(HKEY_LOCAL_MACHINE,"SOFTWARE\红虎工作室\yzkh","khpw")
endif
**************************************************
*** 读取字串值 ReadRegistryString
*** 传回值:字串或.NULL.表无此机码
**************************************************
FUNCTION ReadRegistryString
LPARAMETERS HKey, Subkey, Entry
LOCAL nHandle, nResult, nBufferSize, cDataBuffer, nType
nHandle=0
*开启机码
nResult=RegOpenKey(HKey,SubKey,@nHandle)
IF nResult#ERROR_SUCCESS
RETURN .NULL.
ENDIF
* 使用RegQueryValueEx决定资料型态
DECLARE INTEGER RegQueryValueEx IN Win32API ;
INTEGER nHKey,STRING lpszValueName,INTEGER dwReserved,INTEGER @lpdwType, STRING @lpbData, INTEGER @lpcbData
*将值传回 buffer
cDataBuffer=SPACE(256)
nBufferSize=LEN(cDataBuffer)
nType=1
nResult= RegQueryValueEx(nHandle,Entry,0,@nType,@cDataBuffer,@nBufferSize)
=RegCloseKey(nHandle)
IF nResult#ERROR_SUCCESS
RETURN .NULL.
ENDIF
IF nBufferSize <2
RETURN ""
* 空字串
ENDIF
*去除空白字元及字串後的 NULL
RETURN SUBSTR(CHRTRAN(cDataBuffer,CHR(0),""),1,nBufferSize)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -