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

📄 040108.htm

📁 提供一个VB学习教程,入门级。来源于网上
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title>
<style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" width="98%">
    <tr>
      <td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">API函数</a></td>
    </tr>
    <tr>
      <td width="100%">
        <p align="center">操作注册表函数</td>
    </tr>
    <tr>
      <td width="100%"><br>
        打开1个任意的注册表主键,并获得其句柄:RegOpenKeyA函数,声明:<br>
        Declare Function RegOpenKeyA Lib &quot;advapi32.dll&quot; (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long<br>
        除了七个根目录下的基本主键外,操作其他的下级主键,都要先用此函数打开。并将句柄传到其他函数以操作该键。<br>
        参数:<br>
        hKey Long,指定一个基本主键(那七个主键箱之一)。 <br>
        lpSubKey String,要打开的主键名 ,是hKey指定主键的下级主键,<br>
        phkResult Long,指定一个变量,用于装载本函数打开的主键的句柄,我们主要利用这个参数的返回值。以进行下一步的操作,例:<br>
        Public Const HKEY_LOCAL_MACHINE = &amp;H80000002<br>
        Dim hKey As Long<br>
        Dim lpSubKey As String<br>
        Dim phkResult As Long<br>
        lpSubKey = &quot;System\CurrentControlSet\Services\RemoteAccess&quot;<br>
        lxn = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, phkResult)<br>
        函数返回值为零表示成功,如上若lxn为0则表示函数顺利执行,并用phkResult返回打开的主键句柄。我们下面就要用这个值。<br>
        读取指定主键下的1个项的值:RegQueryValueExA函数。声明:<br>
        Declare Function RegQueryValueExA Lib &quot;advapi32.dll&quot; (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long<br>
        参数:<br>
        hKey Long,一个已打开下级主键句柄(用前面RegOpenKey函数打开的主键,采用其phkResult参数的返回值),也可以是六个基本主键之一。 <br>
        lpValueName String,要获取值的项名字 (在主键&quot;文件夹&quot;上双击时右边文本框中&quot;名称&quot;的文字,即注册表项名)<br>
        lpReserved Long,未用,设为零 <br>
        lpType Long,用于装载取回数据类型的一个变量 ,如文本(值1)或二进制值。<br>
        lpData Any,用于装载指定值的一个缓冲区 。注:如果键值是字符串,则要加Byval,否则为指向字符串指针的指针,会出错。<br>
        lpcbData Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字节数。<br>
        调用如:<br>
        Dim lpData As String<br>
        LpData=Space(255) '装载字符串值<br>
        Dim lpValueName As String<br>
        lpValueName = &quot;Remote Connection&quot; '注册表项名称<br>
        hKey = phkResult '上例用RegOpenKeyA打开的键句柄。<br>
        Dim lpcbData as long<br>
        lpcbData=255<br>
        ReturnCode = RegQueryValueEx(hKey, lpValueName, 0&amp;, 1&amp;, Byval lpData, lpcbData) <br>
        '读取字符串值。第4个参数指明1&amp;,表示返回值为字符串类型。<br>
        lpData=Left(lpData,lpcbData)<br>
        对于二进制数据的读取:因为在注册表中二进制值用&quot;00 00 00 01&quot;四个字节来表示,因此可将lpData定义为long型数(四个字节),lpcbData参数就固定为4,而lpType参数为3&amp;(二进制类型),如:<br>
        Dim lpData As Long<br>
        ReturnCode=RegQueryValueEx(hKey, lpValueName, 0&amp;, 3&amp;, lpData, 4)<br>
        [问题:lpData参数的返回值与二进制值关系怎样?如二进制值<br>
        01 00 00 00 --&gt; lpData=1<br>
        10 00 00 00 --&gt; lpData=16……<br>
        00 00 00 01 --&gt; lpData=16777216.<br>
        是二进制吗?我怎么看着象16进制?]<br>
        创建/修改指定键中项的值:RegSetValueExA函数,声明:<br>
        Public Declare Function RegSetValueEx Lib &quot;advapi32.dll&quot; Alias &quot;RegSetValueExA&quot; (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long <br>
        参数与RegQueryValueEx函数类似,如下:<br>
        hKey Long,一个已打开键的句柄。 <br>
        LpValueName String,要设置值的项的名字,如果是1个原来不存在的项名,则会在该键内创建1个此名字的注册表项。如果是原来存在的项,则会修改这个项的原有值。 如果指定1个空字符串,则表示&quot;(默认)&quot;项。<br>
        Reserved Long,未用,设为零 。<br>
        dwType Long,要设置的数据类型,字符串值为1,二进制值为3。 <br>
        lpData Any,要设置的键值变量缓冲区。注意,字符串值要加上Byval。 <br>
        cbData Long,lpData字符串(或数据)的字节长度。调用如:<br>
        Dim lgs As String<br>
        lgs = &quot;这句话存到注册表中&quot; &amp; Chr(0)<br>
        a = RegOpenKey(HKEY_LOCAL_MACHINE, &quot;config\0001&quot;, lxn)<br>
        RegSetValueEx lxn, &quot;abc&quot;, 0&amp;, 1&amp;, ByVal lgs, Len(lgs)+1<br>
        参数其实简单讲就是:键句柄,项名,0,1,Byval要写入的字串,字串长度。<br>
        删除1个项的值:RegDeleteValueA函数。声明:<br>
        Declare Function RegDeleteValue Lib &quot;advapi32.dll&quot; Alias &quot;RegDeleteValueA&quot; (ByVal hKey As Long, ByVal lpValueName As String) As Long<br>
        参数hKey为1个打开的主键名,要删除的项就在这个主键内。<br>
        参数lpValueName为要删除的注册表项名称,如果指定1个空串,表示删除该键的默认项值。调用如:<br>
        Dim lxn As Long<br>
        a = RegOpenKey(HKEY_LOCAL_MACHINE, &quot;config\0001&quot;, lxn)<br>
        RegDeleteValue lxn, &quot;&quot;<br>
        -------------------------------------------------------------<br>
        创建1个主键:RegCreateKeyA函数<br>
        此函数在指定主键下创建下级主键,注:创建的是&quot;主键&quot;(象文件夹)而不是项(右边框中的&quot;注册表项名称&quot;)。创建项只要用上面的RegSetValueEx就行了。 声明:<br>
        Public Declare Function RegCreateKey Lib &quot;advapi32.dll&quot; Alias &quot;RegCreateKeyA&quot; (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long<br>
        参数hKey指定1个打开的任意主键,或六个基本键箱,lpSubKey是新创建的主键名,可有多级子路径,phkResult返回刚刚创建的主键句柄。调用如:<br>
        RegCreateKeyA HKEY_CURRENT_USER, &quot;江西 \宁都 \湛田 \吉富&quot;, lxn<br>
        其实这里不仅创建了&quot;吉富&quot;键,同时创建了&quot;江西&quot;&quot;宁都&quot;&quot;湛田&quot;三个它的上级主键。&quot;江西&quot;键在主键箱HKEY_CURRENT_USER下,整条路径为:<br>
        HKEY_CURRENT_USER\江西 \宁都 \湛田 \吉富 带下划线为新创建的多级子键。<br>
        [问题:如果&quot;创建&quot;现存的键,会不会清空键的原有内容?]<br>
        当然,你也可以在现有的任意主键(非主键箱)下创建子键,但必须先打开那个主键,如:<br>
        Dim lgs As Long, lxn As Long<br>
        a = RegOpenKey(HKEY_CURRENT_USER, &quot;AppEvents\EventLabels&quot;, lxn)<br>
        b = RegCreateKey(lxn, &quot;新键1&quot;, lgs)<br>
        上例新创建的键路径就是HKEY_CURRENT_USER\AppEvents\EventLabels\新键1,<br>
        删除1个主键:RegDeleteKeyA函数,声明:<br>
        Declare Function RegDeleteKey Lib &quot;advapi32.dll&quot; Alias &quot;RegDeleteKeyA&quot; (ByVal hKey As Long, ByVal lpSubKey As String) As Long<br>
        参数hKey为打开的1个主键句柄,也可直接指定为1个主键箱。<br>
        参数lpSubKey为指定要删除的主键,要包含在hKey指定的主键下。调用如:<br>
        RegDeleteKey HKEY_CURRENT_USER, &quot;AppEvents\ndlxn1&quot;<br>
        上句删除了HKEY_CURRENT_USER\AppEvents\ndlxn1键。<br>
        关闭1个打开的键:RegCloseKey函数。在修改增删完1个键的项值后,应当关闭这个键,参数只要将被RegOpenKeyA的键句柄传入即可,声明:<br>
        Declare Function RegCloseKey Lib &quot;advapi32.dll&quot; (ByVal hKey As Long) As Long<br>
        例如:a = RegOpenKeyA(HKEY_LOCAL_MACHINE, &quot;Software\Microsoft&quot;, lxn)<br>
        b=RegCloseKey(lxn)<br>
        要养成1个习惯,每用RegOpenKeyA打开1个键,使用完后就用本函数将其关闭。
        <p align="center">
        <br>
        &lt; <a href="040107.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="040109.htm">下一页</a>     
        &gt;<br>
      </td>
    </tr>
  </table>
  </center>
</div>
</body>
</html>

⌨️ 快捷键说明

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