PDA

View Full Version : سوال: استخراج يه مقدار از رجيستري



m2011kh
پنج شنبه 13 مرداد 1390, 15:29 عصر
من ميخوام يه مقدار يا رشته رو از رجيستري بگيرم آموزش هاي هم پيدا كردم ولي هيچ كدوم واضح و درست آموزش نداده بودم دوستان كمك كنند خيلي ممنون ميشم.
:قلب:

m2011kh
جمعه 14 مرداد 1390, 12:12 عصر
آقا كسي نيست كمك كنه:گریه:
:ناراحت::افسرده::عصبانی++:
كمكم كنيد:قلب:

محسن واژدی
شنبه 15 مرداد 1390, 00:17 صبح
سلام علیکم
برای گرفتن یک رشته، کد زیر را در یک ماژول کپی کنید:

Option Explicit


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
Declare Function RegOpenKey _
Lib "advapi32.dll" _
Alias "RegOpenKeyA" (ByVal hKey As Long, _
ByVal lpSubKey As String, _
phkResult As Long) As Long
Public Const HKCR = &H80000000 'HKEY_CLASSES_ROOT

Public Const HKCU = &H80000001 'HKEY_CURRENT_USER

Public Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE

Public Const REG_SZ = 1
Public Function GetString(ByVal hKey As Long, _
ByVal strPath As String, _
ByVal strValue As String)

On Error Resume Next

Dim Keyhand As Long, datatype As Long, lResult As Long, r&, lValueType&

Dim strBuf As String, lDataBufSize As Long, intZeroPos As Integer

r = RegOpenKey(hKey, strPath, Keyhand)
Call RegQueryValueEx(Keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)

If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, " ")
Call RegQueryValueEx(Keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize)

intZeroPos = InStr(strBuf, Chr$(0))

If intZeroPos > 0 Then
GetString = Left$(strBuf, intZeroPos - 1)
Else
GetString = strBuf
End If
End If

End Function


نمونه استفاده:
Private Sub Command1_Click()
MsgBox GetString(HKCU, "Control Panel\Desktop", "Wallpaper")
End Sub

موفق باشید

m2011kh
شنبه 15 مرداد 1390, 13:29 عصر
متشكرم خيلي كمك كرديد:لبخندساده: