registry

the master
04-08-2003, 02:16 PM
hi is it at all possible to save values to the registry and the load them back up again

could i save a number like "413244913094656459237892384723" and get my program to load this into a text box when my app loads

please help

HiTmAN
04-08-2003, 02:23 PM
You can doing using API's have a look around on AllAPI.net (http://www.allapi.net)

the master
04-08-2003, 02:34 PM
You can doing using API's have a look around on AllAPI.net (http://www.allapi.net)

thanx but i cant seem to find what im looking for

HiTmAN
04-08-2003, 02:37 PM
look at

RegCreateKeyEx
RegOpenKeyEx
RegSetValueEx
ShSetValue

the master
04-08-2003, 02:39 PM
look at

RegCreateKeyEx
RegOpenKeyEx
RegSetValueEx
ShSetValue

what does that mean. ive never done anything like this before and i dont have a clue

HiTmAN
04-08-2003, 02:40 PM
On AllApi.net, look for APIs under those names, and read about them

loquin
04-08-2003, 02:56 PM
A somewhat safer method would be to use VB's built-in registry functions - GetSetting and SaveSetting.

the master
04-08-2003, 02:56 PM
On AllApi.net, look for APIs under those names, and read about them

thanx ive tried this code

'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()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Command1.Caption = "Set Value"
Command2.Caption = "Get Value"
Command3.Caption = "Delete Value"
End Sub

but what if i make 2 progs and use this code for both of them will they hav an effect on oneanother

the master
04-08-2003, 02:58 PM
A somewhat safer method would be to use VB's built-in registry functions - GetSetting and SaveSetting.

how do i do that

loquin
04-08-2003, 03:04 PM
A somewhat safer method would be to use VB's built-in registry functions - GetSetting and SaveSetting.

how do i do that
an example of both is Here (http://www.visualbasicforum.com/showthread.php?threadid=71934).

the master
04-08-2003, 03:08 PM
do you mean this bit

FirstRun = GetSetting(App.Title, "Settings", "FirstRun", "FIRST" )

if so how does it work. what do i change to make this work with my prog

loquin
04-08-2003, 03:17 PM
in vb, highlight GetSetting & press F1 - all the info you want will appear!

Also, searching the forum with the "Getsetting" keyword returned 227 hits. You might also take a look at some of these.

GetSetting is just what it sounds like. In the example, the first argument is the application name, the second is the Section, the third is the Key, and the fourth is the default value you will see if the registry record doesn't exist. The GetSetting and SaveSetting functions get and save string values into the registry - so you will need to convert to/from strings if you need to save a numeric value.

In the example shown, there is also an example of the SaveSetting sub. It is used in a similar fashion as getsetting.


The GetSetting and SaveSetting store registry values in a specific part of the registry, so you won't be able to "break" other (non-vb)applications, or crash your computer by using them.

the master
04-08-2003, 03:21 PM
in vb, highlight GetSetting & press F1 - all the info you want will appear!

GetSetting is just what it sounds like. In the example, the first argument is the application name, the second is the Section, the third is the Key, and the fourth is the default value you will see if the registry record doesn't exist. The GetSetting and SaveSetting functions get and save string values into the registry - so you will need to convert to/from strings if you need to save a numeric value.

In the example shown, there is also an example of the SaveSetting sub. It is used in a similar fashion as getsetting.


The GetSetting and SaveSetting store registry values in a specific part of the registry, so you won't be able to "break" other (non-vb)applications, or crash your computer by using them.

thanx i think i understand now but one thing ive just got to ask... what are these key things.

tried f1 got a message saying help is not available

loquin
04-08-2003, 03:25 PM
thanx i think i understand now but one thing ive just got to ask... what are these key things.

tried f1 got a message saying help is not availablethink of the key as a variable name. This is the name of the data that you are saving to the registry. Not your variable name, but the key name in the registry.

Also, you should re-install VB to get the help, because it is very, very useful.

the master
04-08-2003, 03:29 PM
think of the key as a variable name. This is the name of the data that you are saving to the registry. Not your variable name, but the key name in the registry.

Also, you should re-install VB to get the help, because it is very, very useful.

i cant install help or the msdn thingy theres something wrong with the disk i think and when i tried to install it on my laptop i had to try about 6 times to get it to work and in the end i had to install just vb and the basic tools.

i would reinstall it to get the rest of it but it might not come back at all and i cant do without it on my laptop.

loquin
04-08-2003, 06:20 PM
1: Add a link to MSDN on microsoft's website.

2: Start searching the site. As I said, there were over 200 references to SaveSetting alone. Take the effort to actually look for an answer and trying to make it work before pleading for help.

EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum