让注册表记住VFP应用程序的使用次数

让注册表记住VFP应用程序的使用次数,第1张

让注册表记住VFP应用程序的使用次数,第2张

注册表是Windows操作系统中的数据库,存储系统的硬件信息、应用程序信息和用户信息。它为应用程序提供了一个存储参数设置的地方。
在Windows操作系统中,当我们运行“RegEdit.exe”文件时,从打开的注册表编辑窗口可以看到,注册表由两部分组成:左边每一项的第一层称为注册表的主键,双击每个主键时扩展的键称为子项;窗口的右侧是每个子项的键值。每个子项都有其相应的默认值和由不同的键值名称表示的键值(其中默认值命名为空字符串)。

在VFP应用程序中读写注册表数据需要WIN32API (Windows 32位应用程序接口)函数的帮助。为了像调用其他VFP函数一样调用WIN32API函数,必须先用DECLARE命令注册(声明)每个被调用的函数,其格式为在库名中声明[cfunctiontype]函数名[as aliasname];

[cParamType1 [@] ParamName1,cParamType2 [@] ParamName2,...]

各参数的含义是:① CFFunctionType是函数的返回值类型,可以是SHORT、INTEGER或LONG、SINGLE、DOUBLE、STRING中的一种。如果函数没有返回值,CFFunctionType将被省略;②FunctionName表示被调用的WIN32API函数名,请注意大小写,否则VFP将无法在。DLL LibraryName并出错。如果这个函数名与VFP的函数同名,可以使用as子句取另一个合法的VFP函数名;③LibraryName指定外部windows.dll的名称。如果使用WIN32API,VFP将搜索FunctionName在KERNEL32.DLL、GDI32.DLL、USER32.DLL、MPR.DLL和ADVAPI32.DLL。④cParamType指定每个参数的类型,可以是INTEGER或LONG、SINGLE、DOUBLE或STRING中的一种。在VFP中有两种方法可以将参数传递给函数:通过值和通过名称(引用)。前者只把一个变量(或常量)的值传递给函数,所以变量的值不能在函数内部修改;后者是将一个变量的地址(不能使用常量)传递给函数,这样变量的值就可以在函数内部修改,适用于变量的值需要在函数内部修改或者返回值放在变量中的情况。在VFP中,如果在变量名前面加上“@”,则表示参数通过引用传递,没有“@”则表示参数通过值传递。至于这个示例程序中的参数是按引用传递还是按值传递,从DECLARE命令和函数调用语句中就一目了然了。
每次运行以下示例程序,它都会在注册表中HKEY _当前_用户\软件\ lytapp子项的TimesForUse下的值加1,直到它运行12次:

*每个主键对应一个整数值,即:

#定义HKEY _类_根位集(0,31)& &-2147483648
#定义HKEY _当前_用户位集(0,31)+1 &-2147483647
#定义HKEY _本地_机器位集(0,31)+2 &-2147483646
#定义HKEY _用户位集(0,31)+3 &-214777

*键值的数据类型:1-字符串、3-二进制、4-整数

# DEFINE REG _ SZ 1
# DEFINE REG _ BINARY 3
# DEFINE REG _ DWORD 4

*当下面的API函数返回0时,操作成功。

在Win32API中声明整数RegOpenKey
Integer nHKey,String @cSubKey,Integer @nResult

在Win32API中声明整数RegCreateKey
Integer nHKey,String @cSubKey,Integer @nResult

在Win32API中声明整数RegSetValueEx
Integer hKey,String lpszValueName,Integer dwReserved,;
Integer fdwType,String lpbData,Integer cbData

在Win32API中声明整数RegQueryValueEx
Integer nHKey,String lpszValueName,Integer dwReserved,;
Integer @lpdwType,string @lpbData,Integer @lpcbData

*在Win32API中声明整数RegDeleteKey
* Integer nHKey,String @cSubKey

*在Win32API中声明整数RegDeleteValue
*整数nHKey,字符串cSubKey

*在Win32API中声明整数RegCloseKey
*整数nHKey

csubkey = ' Software \ ly tapp '
n result = 0
if regopen key(HKEY _当前_用户,@csubkey,@ n result)# 0
RegCreateKey(HKEY _当前_用户,csubkey,@nresult)
endif

*指向子项“HKEY _当前_用户\软件\ lytappp”的长整型值存储在nresult中。

lpdwtype=0
lpbdata=space(256)
lpcbdata=len(lpbdata)
if RegQueryValueEx(nresult,'TimesForUse',0,@lpdwtype,@lpbdata,@lpcbdata)=0
do case
case lpdwtype=REG_SZ
lpbdata=left(lpbdata,lpcbdata-1)
if val(lpbdata)

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 让注册表记住VFP应用程序的使用次数

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情