vb里怎么把内容保存到文件或注册表?

解决方案 »

  1.   

    你这个问题太反反,保存文件可以包括保存城什么类型的如果保存为ini可以用api
      GetPrivateProfileInt
      GetPrivateProfileString
      WritePrivateProfileString  其中 WritePrivateProfileString 是用来向 INI 文件写信息的,而 GetPrivateProfileInt 和 GetPrivateProfileString 则是用来从 INI 文件中读信息的,前者用于读取整型数据,后者则用于读取字符串型数据。  上述三个 API 函数在 VB 中的申明和说明如下:  Private Declare Function GetPrivateProfileInt Lib "kernel32" _
    Alias "GetPrivateProfileIntA" ( _       ' 返回所读取的长整型值
        ByVal lpApplicationName As String, _    ' 要读取的段 (Section) 名称
        ByVal lpKeyName As String, _            ' 要读取的的键 (Key) 名称
        ByVal nDefault As Long, _               ' 指定默认值,如果读取时出错,则返回该值
        ByVal lpFileName As String) As Long     ' 指定要读的 INI 文件名Private Declare Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringA" ( _    ' 返回所读取的字符串值的真实长度
        ByVal lpApplicationName As String, _    ' 要读取的段 (Section) 名称
        ByVal lpKeyName As Any, _               ' 要读取的的键 (Key) 名称
        ByVal lpDefault As String, _            ' 指定默认值,如果读取时出错,则返回该值
        ByVal lpReturnedString As String, _     ' 指定接收返回值的字符串变量
        ByVal nSize As Long, _                  ' 指定允许字符串值的最大长度
        ByVal lpFileName As String) As Long     ' 指定要读的 INI 文件名Private Declare Function WritePrivateProfileString Lib "kernel32" _
    Alias "WritePrivateProfileStringA" ( _  ' 如果成功返回非 0 值,失败返回 0
        ByVal lpApplicationName As String, _    ' 要写入的段 (Section) 名称
        ByVal lpKeyName As Any, _               ' 要写入的的键 (Key) 名称
        ByVal lpString As Any, _                ' 要写入的值 (Value),以字符串表示
        ByVal lpFileName As String) As Long     ' 指定要写的 INI 文件名
     
    读写注册表可以用到这么几个api
    ● RegSetValueEx(): 在打开的注册表关键字的值域中存储数据; ● RegCloseKey(): 释放指定的关键字的句柄; ● RegQueryValueEx(): 在注册表中查找与您指定的键值相关的值; ● RegCreateKeyEx(): 建立并打开指定的关键字,若已存在则打开它; ● RegEnumKeyEx(): 枚举指定的注册表关键字的子关键字(32位); ● RegEnumValue(): 每次调用枚举指定的注册表关键字的值,复制一个带索引的值的名称和数据块; ● RegDeletekey(): 删除一个关键字以及它的子关键字; ● RegDeleteValue(): 在指定的注册表关键字中删除一个带名字的值。 
    具体使用你可以下载现成的类
      

  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.   


        建立与读取.ini文件 
     
    '请於form中放3个TextBox,一个CommandBox
    Private Declare Function GetPrivateProfileString Lib "kernel32"  _
       Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
       ByVal lpKeyName As Any, ByVal lpDefault As String,  _
       ByVal lpReturnedString As String, ByVal nSize As Long, _
       ByVal lpFileName As String) As Long
    Private Declare Function WritePrivateProfileString Lib "kernel32"  _
       Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
       ByVal lpKeyName As Any, ByVal lpString As Any, _
       ByVal lpFileName As String) As LongPrivate Sub Command1_Click()
    Dim success As Long
    success = WritePrivateProfileString("MyApp", "text1", Text1.Text, "c:\aa.ini")
    '叁数一 Section Name
    '叁数二 於.ini中的项目
    '叁数三 项目的内容
    '叁数四 .ini文件的名称
    success = WritePrivateProfileString("MyApp", "text2", Text2.Text, "c:\aa.ini")
    success = WritePrivateProfileString("MyApp2", "text3", Text3.Text, "c:\aa.ini")
    End SubPrivate Sub Form_load()
    Dim ret As Long
    Dim buff As String
    buff = String(255, 0)
    ret = GetPrivateProfileString("Myapp", "text1", "text1", buff, 256, "c:\aa.ini")
    '若.ini MyApp中无text1,则采用叁数三的值
    Text1.Text = buff
    buff = String(255, 0)
    ret = GetPrivateProfileString("Myapp", "text2", "text2", buff, 256, "c:\aa.ini")
    Text2.Text = buff
    buff = String(255, 0)
    ret = GetPrivateProfileString("Myapp2", "text3", "text3", buff, 256, "c:\aa.ini")
    Text3.Text = buff
    End Sub