PDA

View Full Version : سوال: چطور می شه یک لیست باکس رو ذخیره کرد تو ریجستری ؟



maxtools
پنج شنبه 30 دی 1389, 04:34 صبح
با سلام
چطور می شه یک لیست باکس رو ذخیره کرد تو ریجستری ؟

محسن واژدی
پنج شنبه 30 دی 1389, 14:58 عصر
سلام علیکم
نمونه زیر رو ببینین
نمونه زیر شامل سه دکمه است یکیشون واسه افزودن داده به لیست و دوتای دیگه هم یکی واسه ذخیره و دیگری بارگذاری لیست ذخیره شده از ریجستری هست

maxtools
پنج شنبه 30 دی 1389, 15:57 عصر
خیلی گلی رفیق فقط یک سوال کوچیک کجا ذخیره می شه ؟

ali.rezaei7
پنج شنبه 30 دی 1389, 16:13 عصر
درود. با تابعي كه برات نوشتم، مي توني Registry value ذخيره كني.

اينارو اول برنامت بزار:


Private 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
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
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal HKEY As Long) As Long

Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_CURRENT_CONFIG = &H80000005
Private Const HKEY_USERS = &H80000003

Private Const REG_SZ = 1
Private Const KEY_WRITE = &H20006
Private Const ERROR_SUCCESS = 0&
از اين تابع هم مي توني براي ذخيره مقدار در داخل رجيستري استفاده كني:


Private Function AddStringValueToRegistry(HKEY As Long, SubKey As String, ValueName As String, ValueData As String) As Boolean

Dim h As Long
Dim Added As Boolean

If RegOpenKeyEx(HKEY, SubKey, 0, KEY_WRITE, h) = ERROR_SUCCESS Then
If RegSetValueEx(h, ValueName, 0, REG_SZ, ByVal ValueData, Len(ValueData)) = ERROR_SUCCESS Then Added = True
End If

RegCloseKey h
AddStringValueToRegistry = Added
End Function
پارامترهاي تابع از اين قراره:


HKEY: يكي از Hkey ها رو بزار.
SubKey: مسير كليدي كه قراره اطلاعت توش ذخيره بشه.
ValueName: نام Value كه قراره مقدارشو ست كني.
ValueData: مقدار Value.

parselearn
پنج شنبه 30 دی 1389, 16:15 عصر
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\App\Common

محسن واژدی
پنج شنبه 30 دی 1389, 16:33 عصر
خیلی گلی رفیق فقط یک سوال کوچیک کجا ذخیره می شه ؟

لطف دارین
همانگونه که parselearn (http://barnamenevis.org/member.php?48732-parselearn) عزیز گفتند داده ها د ر مسیر "HKEY_CURRENT_USER\Software\VB and VBA Program Settings\App\Common" ذخیره میشه ، اما از اونجایی که دستور SaveSettingو GetSetting باید داده ها رو بالاجبار در مسیر بالا ذخیره کنه ، هیچ اختیار قابل توجهی را در اختیارتان نمی زاره، پس شما میتونین از دستوراتی که دوست عزیزم ali.rezaei7 (http://barnamenevis.org/member.php?130237-ali.rezaei7) در پست بالا قرار دادن استفاده کنین و داده ها روی در کلیدی که خودتان تعیین میکنید، ذخیره کنین

موفق باشید

maxtools
پنج شنبه 30 دی 1389, 23:45 عصر
ممنون دوست عزیز فقط چطور میشه داده های رو پاک کرد ؟

محسن واژدی
جمعه 01 بهمن 1389, 08:49 صبح
متوجه نشدم کمی بیشتر راجع به حذف داده ها توضیح دهید یعنی می خوایین اونا رو از کجا حذف کنین یا یا می خواین چطور حذف بشن؟

maxtools
جمعه 01 بهمن 1389, 11:42 صبح
می خوان چطور حذف بشن ؟

ali.rezaei7
جمعه 01 بهمن 1389, 11:44 صبح
درود. اگه از روش آقا محسن، براي ذخيره مقادير استفاده كرده باشي، در اينصورت براي پاك كردن مقادير مي توني از تابع DeleteSetting استفاده كني.

ساختار تابع:


DeleteSetting "KeyName", ["SubKey"], ["ValueName"]
نحوه استفاده:


DeleteSetting "KeyName", ["SubKey"], ["ValueName"] ' حذف مقدار مورد نظر
DeleteSetting "KeyName", ["SubKey"] 'حذف يك زير كليد
DeleteSetting "KeyName" 'حذف كليد اصلي و تمامي زير كليد هاي آن
اگه از روش من استفاده كري، با تابع DeleteRegistryValue مي توني مقدار مورد نظرتو حذف كني.
نحوه استفادش به اين صورت هست كه ابتدا بوسيله تابع RegOpenKeyEx به كليدي كه Value داخلش هست متصل مي شي. و بعد هندلي كه اين تابع در آخرين پارمتر بر مي گردونه رو داخل اولين پارامتر تابع DeleteRegistryValue مي زاري و بعد نام مقداري كه قراره حذف بشه رو در پارامتر دوم تابع قرار ميدي.

ساختار تابع RegDeleteValue:

Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long