实现dos命令输入以及实现对系统注册表的操作--
以上两个操作该用什么控件或者组件?
谢谢!---学习vb的caicai

解决方案 »

  1.   

    1、shell函数shell "c:\aa.exe"
      

  2.   

    实现对系统注册表的操作
    'This program needs 3 buttons
    Const REG_SZ = 1 ' Unicode nul terminated string
    Const REG_BINARY = 3 ' Free form binary
    Const HKEY_CURRENT_USER = &H80000001
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (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
    Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
        Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
        'retrieve nformation about the key
        lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)
        If lResult = 0 Then
            If lValueType = REG_SZ Then
                'Create a buffer
                strBuf = String(lDataBufSize, Chr$(0))
                'retrieve the key's content
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
                If lResult = 0 Then
                    'Remove the unnecessary chr$(0)'s
                    RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
                End If
            ElseIf lValueType = REG_BINARY Then
                Dim strData As Integer
                'retrieve the key's value
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, strData, lDataBufSize)
                If lResult = 0 Then
                    RegQueryStringValue = strData
                End If
            End If
        End If
    End Function
    Function GetString(hKey As Long, strPath As String, strValue As String)
        Dim Ret
        'Open the key
        RegOpenKey hKey, strPath, Ret
        'Get the key's content
        GetString = RegQueryStringValue(Ret, strValue)
        'Close the key
        RegCloseKey Ret
    End Function
    Sub SaveString(hKey As Long, strPath As String, strValue As String, strData As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Save a string to the key
        RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
        'close the key
        RegCloseKey Ret
    End Sub
    Sub SaveStringLong(hKey As Long, strPath As String, strValue As String, strData As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Set the key's value
        RegSetValueEx Ret, strValue, 0, REG_BINARY, CByte(strData), 4
        'close the key
        RegCloseKey Ret
    End Sub
    Sub DelSetting(hKey As Long, strPath As String, strValue As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Delete the key's value
        RegDeleteValue Ret, strValue
        'close the key
        RegCloseKey Ret
    End Sub
    Private Sub Command1_Click()
        Dim strString As String
        'Ask for a value
        strString = InputBox("Please enter a value between 0 and 255 to be saved as a binary value in the registry.", App.Title)
        If strString = "" Or Val(strString) > 255 Or Val(strString) < 0 Then
            MsgBox "Invalid value entered ...", vbExclamation + vbOKOnly, App.Title
            Exit Sub
        End If
        'Save the value to the registry
        SaveStringLong HKEY_CURRENT_USER, "KPD-Team", "BinaryValue", CByte(strString)
    End Sub
    Private Sub Command2_Click()
        'Get a string from the registry
        Ret = GetString(HKEY_CURRENT_USER, "KPD-Team", "BinaryValue")
        If Ret = "" Then MsgBox "No value found !", vbExclamation + vbOKOnly, App.Title: Exit Sub
        MsgBox "The value is " + Ret, vbOKOnly + vbInformation, App.Title
    End Sub
    Private Sub Command3_Click()
        'Delete the setting from the registry
        DelSetting HKEY_CURRENT_USER, "KPD-Team", "BinaryValue"
        MsgBox "The value was deleted ...", vbInformation + vbOKOnly, App.Title
    End Sub
    Private Sub Form_Load()    Command1.Caption = "Set Value"
        Command2.Caption = "Get Value"
        Command3.Caption = "Delete Value"
    End Sub
      

  3.   

    操作注册表有一堆API函数,功能很全的!!!
    RegCloseKey VB声明 
    Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long 
    说明 
    关闭系统注册表中的一个项(或键) 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,要关闭的项 
    ________________________________________________________________________________
    RegCreateKeyEx VB声明 
    Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long 
    说明 
    在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数。如指定的项已经存在,则函数会打开现有的项 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个打开项的句柄,或者一个标准项名 
    lpSubKey String,欲创建的新子项的名字 
    Reserved Long,设为零 
    lpClass String,项的类名 
    dwOptions Long,下述常数为零:REG_OPTION_VOLATILE——这个项不正式保存下来,系统重新启动后会消失 
    samDesired Long,带有前缀KEY_??的一个或多个常数。它们组合起来描述了允许对这个项进行哪些操作 
    lpSecurityAttributes SECURITY_ATTRIBUTES,对这个项的安全特性进行描述的一个结构(用ByVal As Long传递空值)。不适用于windows 95 
    phkResult Long,指定用于装载新子项句柄的一个变量 
    lpdwDisposition Long,用于装载下列某个常数的一个变量:
    REG_CREATED_NEW_KEY——新建的一个子项
    REG_OPENED_EXISTING_KEY——打开一个现有的项  
    注解 
    REG_OPTION_VOLATILE不适用于windows 95
    --------------------------------------------------------------------------------
    RegDeleteKey VB声明 
    Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long 
    说明 
    删除现有项下方一个指定的子项 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或者标准项名之一 
    lpSubKey String,要删除项的名字。这个项的所有子项也会删除 --------------------------------------------------------------------------------
    RegDeleteValue VB声明 
    Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long 
    说明 
    删除指定项下方的一个值 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或标准项名之一 
    lpValueName String,要删除的值名。可设为vbNullString或一个空串,表示删除那个项的默认值 --------------------------------------------------------------------------------
    RegEnumKeyEx VB声明 
    Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long 
    说明 
    枚举指定项下方的子项 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或者指定一个标准项名 
    dwIndex Long,欲获取的子项的索引。第一个子项的索引编号为零 
    lpName String,用于装载指定索引处项名的一个缓冲区 
    lpcbName Long,指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。一旦返回,它会设为实际装载到lpName缓冲区的字符数量 
    lpReserved Long,未用,设为零 
    lpClass String,项使用的类名。可以为vbNullString 
    lpcbClass Long,用于装载lpClass缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字符数量 
    lpftLastWriteTime FILETIME,枚举子项上一次修改的时间 
      

  4.   

    RegEnumValue VB声明 
    Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long 
    说明 
    枚举指定项的值 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或者指定一个标准项名 
    dwIndex Long,欲获取值的索引。注意第一个值的索引编号为零 
    lpValueName String,用于装载位于指定索引处值名的一个缓冲区 
    lpcbValueName Long,用于装载lpValueName缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 
    lpReserved Long,未用;设为零 
    lpType Long,用于装载值的类型代码的变量 
    lpData Byte,用于装载值数据的一个缓冲区 
    lpcbData Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 
    ____________________________________________________________________________
    RegOpenKeyEx VB声明 
    Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long 
    说明 
    打开一个现有的项。在win32下推荐使用这个函数 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或指定一个标准项名 
    lpSubKey String,欲打开注册表项的名字 
    ulOptions Long,未用,设为零 
    samDesired Long,带有前缀KEY_??的一个或多个常数。它们的组合描述了允许对这个项进行哪些操作 
    phkResult Long,用于装载打开项的名字的一个变量 ____________________________________________________________________________
    RegQueryInfoKey VB声明 
    Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long 
    说明 
    获取与一个项有关的信息 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码。如一个缓冲区的长度不够,不能容下返回的数据,则函数会返回ERROR_MORE_DATA 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或指定一个标准项名 
    lpClass String,指定一个字串,用于装载这个注册表项的类名 
    lpcbClass Long,指定一个变量,用于装载lpClass缓冲区的长度。一旦返回,它会设为实际装载到缓冲区的字节数量 
    lpReserved Long,未用,设为零 
    lpcSubKeys Long,用于装载(保存)这个项的子项数量的一个变量 
    lpcbMaxSubKeyLen Long,指定一个变量,用于装载这个项最长一个子项的长度。注意这个长度不包括空中止字符 
    lpcbMaxClassLen Long,指定一个变量,用于装载这个项之子项的最长一个类名的长度。注意这个长度不包括空中止字符 
    lpcValues Long,用于装载这个项的设置值数量的一个变量 
    lpcbMaxValueNameLen Long,指定一个变量,用于装载这个项之子项的最长一个值名的长度。注意这个长度不包括空中止字符 
    lpcbMaxValueLen Long,指定一个变量,用于装载容下这个项最长一个值数据所需的缓冲区长度 
    lpcbSecurityDescriptor Long,装载值安全描述符长度的一个变量 
    lpftLastWriteTime FILETIME,指定一个结构,用于容纳该项的上一次修改时间 
    ____________________________________________________________________________
    RegQueryValueEx VB声明 
    Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long 
    说明 
    获取一个项的设置值 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或者指定一个标准项名 
    lpValueName String,要获取值的名字 
    lpReserved Long,未用,设为零 
    lpType Long,用于装载取回数据类型的一个变量 
    lpData Any,用于装载指定值的一个缓冲区 
    lpcbData Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字节数 ____________________________________________________________________________
    RegSetValueEx VB声明 
    Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (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 
    说明 
    设置指定项的值 
    返回值 
    Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
    参数表 
    参数 类型及说明 
    hKey Long,一个已打开项的句柄,或指定一个标准项名 
    lpValueName String,要设置值的名字 
    Reserved Long,未用,设为零 
    dwType Long,要设置的数量类型 
    lpData Any,包含数据的缓冲区中的第一个字节 
    cbData Long,lpData缓冲区的长度 
    还有很多,不一一列了,这些差不多了,其它那些可以到网上查查,到处都有的。呵呵!