⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registry.prg

📁 本工资管理系统是一个运行于Windows 95/98 的基于图形用户界面的通用工资管理系统。它具有图形界面友好、操作简单、使用灵活之特点。工资项目、报表格式由用户任意设置
💻 PRG
字号:
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
*  文件名: REGISTRY.PRG 
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


 LOCAL NHKEY , CSUBKEY , NRESULT
 LOCAL HKEY , IVALUE , LPSZVALUE , LPCCHVALUE , LPDWTYPE , LPBDATA , LPCBDATA
 LOCAL LPCSTR , LPSZVAL , NLEN , LPDWRESERVED
 LOCAL LPSZVALUENAME , DWRESERVED , FDWTYPE
 LOCAL ISUBKEY , LPSZNAME , CCHNAME
 DECLARE INTEGER RegOpenKey IN Win32API INTEGER , STRING @ , INTEGER @
 DECLARE INTEGER RegCreateKey IN Win32API INTEGER , STRING @ , INTEGER @
 DECLARE INTEGER RegDeleteKey IN Win32API INTEGER , STRING @
 DECLARE INTEGER RegDeleteValue IN Win32API INTEGER , STRING 
 DECLARE INTEGER RegCloseKey IN Win32API INTEGER 
 DECLARE INTEGER RegSetValueEx IN Win32API INTEGER , STRING , INTEGER , INTEGER , STRING ,  ;
      INTEGER 
 DECLARE INTEGER RegQueryValueEx IN Win32API INTEGER , STRING , INTEGER , INTEGER @ ,  ;
      STRING @ , INTEGER @
 LOCAL NUSERKEY , NCURRENTKEY , NERRCODE , CLPSUBKEY
 NUSERKEY = -2147483647
 NCURRENTKEY = 0
 CLPSUBKEY = 'SoftWare\Microsoft\Bbais' + CHR(0)
 PUBLIC REGOK
 REGOK = .F.
 NERRCODE = REGOPENKEY(M.NUSERKEY,M.CLPSUBKEY,@NCURRENTKEY)
 IF NERRCODE <> 0
 NERRNUM = REGCREATEKEY(NUSERKEY,CLPSUBKEY,@NCURRENTKEY)
 SEED = 73961
 SECD = INT(SECONDS())
 = RAND(-7846)
 A = INT(8736 * RAND())
 B = INT(970852 * RAND())
 C = INT(69453 * RAND())
 A = BITXOR(A,SEED)
 B = BITXOR(B,SEED)
 C = BITXOR(C,SEED)
 CSERIAL = ALLTRIM(STR(A)) + '-' + ALLTRIM(STR(B)) + '-' + ALLTRIM(STR(C))
 CLPVALUENAME1 = 'serial' + CHR(0)
 CLPDATA1 = CSERIAL + CHR(0)
 NCBDATA1 = LEN(CLPDATA1)
 NERRNUM = REGSETVALUEEX(NCURRENTKEY,CLPVALUENAME1,0,1,@CLPDATA1,@NCBDATA1)
 CLPVALUENAME2 = 'regcode' + CHR(0)
 CLPDATA2 = '' + CHR(0)
 NCBDATA2 = LEN(CLPDATA2)
 NERRNUM = REGSETVALUEEX(NCURRENTKEY,CLPVALUENAME2,0,1,@CLPDATA2,@NCBDATA2)
 CLPVALUENAME3 = 'seed' + CHR(0)
 CLPDATA3 = ALLTRIM(STR(SECD)) + CHR(0)
 NCBDATA3 = LEN(CLPDATA3)
 NERRNUM = REGSETVALUEEX(NCURRENTKEY,CLPVALUENAME3,0,1,@CLPDATA3,@NCBDATA3)
 CLPVALUENAME4 = 'Run_Num' + CHR(0)
 CLPDATA4 = '1' + CHR(0)
 NCBDATA4 = LEN(CLPDATA4)
 NERRNUM = REGSETVALUEEX(NCURRENTKEY,CLPVALUENAME4,0,1,@CLPDATA4,@NCBDATA4)
 ENDIF 
 CLPVALUENAME1 = 'serial' + CHR(0)
 CLPVALUENAME2 = 'regcode' + CHR(0)
 CLPVALUENAME3 = 'Run_Num' + CHR(0)
 STORE SPACE(256) TO CLPDATA1 , CLPDATA2 , CLPDATA3
 NCBDATA1 = LEN(CLPDATA1)
 NCBDATA2 = LEN(CLPDATA2)
 NCBDATA3 = LEN(CLPDATA3)
 STORE 0 TO NLPTYPE1 , NLPTYPE2 , NLPTYPE3
 NERRNUM =  ;
      REGQUERYVALUEEX(NCURRENTKEY,CLPVALUENAME1,0,@NLPTYPE1,@CLPDATA1,@NCBDATA1)
 NERRNUM =  ;
      REGQUERYVALUEEX(NCURRENTKEY,CLPVALUENAME2,0,@NLPTYPE2,@CLPDATA2,@NCBDATA2)
 NERRNUM =  ;
      REGQUERYVALUEEX(NCURRENTKEY,CLPVALUENAME3,0,@NLPTYPE3,@CLPDATA3,@NCBDATA3)
 RUN_NUM = VAL(CLPDATA3)
 IF RUN_NUM < 50000
 RUN_NUM = RUN_NUM + 1
 ENDIF 
 CLPVALUENAME4 = 'Run_Num' + CHR(0)
 CLPDATA4 = ALLTRIM(STR(RUN_NUM)) + CHR(0)
 NCBDATA4 = LEN(CLPDATA4)
 NERRNUM = REGSETVALUEEX(NCURRENTKEY,CLPVALUENAME4,0,1,@CLPDATA4,@NCBDATA4)
 CLPVALUENAME4 = 'path' + CHR(0)
 CLPDATA4 = PATHNAME + CHR(0)
 NCBDATA4 = LEN(CLPDATA4)
 NERRNUM = REGSETVALUEEX(NCURRENTKEY,CLPVALUENAME4,0,1,@CLPDATA4,@NCBDATA4)
  REGCLOSEKEY(NCURRENTKEY)
 CSERIAL = SUBSTR(CLPDATA1,1,NCBDATA1 - 1)
 CREGCODE = SUBSTR(CLPDATA2,1,NCBDATA2 - 1)
 REGCODE1 = CALREG(CSERIAL)
 STORE '' TO REG1 , REG2
 FOR I = 1 TO LEN(REGCODE1)
 REG1 = REG1 + CHR(ASC(SUBSTR(REGCODE1,I,1)) + 10)
 ENDFOR 
 SET EXACT ON
 IF REG1 <> CREGCODE
 REGOK = .F.
 ELSE 
 REGOK = .T.
 ENDIF 
 SET EXACT OFF
 CLEAR DLLS
 RETURN 

PROCEDURE calreg
 LPARAMETER SERIAL
 LOCAL N1 , N2 , STR1 , A , B , C , RA1 , RB1 , RC1
 N1 = AT('-',SERIAL)
 A = LEFT(SERIAL,N1 - 1)
 STR1 = SUBSTR(SERIAL,N1 + 1)
 N2 = AT('-',STR1)
 B = LEFT(STR1,N2 - 1)
 C = SUBSTR(STR1,N2 + 1)
 RA1 = PASSWD(A)
 RB1 = PASSWD(B)
 RC1 = PASSWD(C)
 RETURN RA1 + '-' + RB1 + '-' + RC1
ENDPROC
*------
PROCEDURE passwd
 LPARAMETER STR
 LOCAL STR1 , I , J
 STORE '' TO STR1
 FOR I = 1 TO LEN(STR)
 J = MOD(I * 12,I + 15) + MOD(I * I,I + 8) + I * 3 + 1
 STR1 = STR1 + CHR(ASC(SUBSTR(STR,I,1)) + J)
 ENDFOR 
 RETURN STR1
ENDPROC
*------*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -