برنامه نویس

به وبلاگ خودتان خوش آمدید.

برنامه نویس

به وبلاگ خودتان خوش آمدید.

نحوه برقراری ارتباط دلفی با رجیستری ویندوز!!!!!!!!

شما برای کار با رجیستری در دلفی نیاز به تعریف و نوشتن هیچ کلاس و متد و آبجکت ندارید شرکت برای کار با رجیستر یه یونیت با همین نام Registry ارائه داده است  برای کار با رجیستر شامل کلاس TRegistry که دارای روال ها و تابع های خاصی مثل

CreateKey یا WriteString یا DeleteKey یا MoveKey یا ReadFloat و....میباشد. نحو اصلی کار با رجیستری و ثبت کردن مقدار ایجاد یک کلید و.... به این صورت می باشد که :

ابتدا یونیت رجیستری رو به لیست Uses یونیتمون اضافه می کنیم به شکل زیر :

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Registry;

متغیر باید از نوع کلاس TRegistry تعریف کنیم تا بتوانیم از توابع آن ها استفاده کنیم. به شکل زیر

Var
B:TRegistry;

سپس باید یک نوع از کلاس را بوجود بیاوریم که طبق معمول باید از constructorایجاد کنیم مربوط به اکثر کلاس ها استفاده کنیم به شکل زیر

b:=TRegistry.Create;

برای کار با رجیستری باید به یکی از کلیدهای زیر اشاره کنیم که عبارتند از :
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_PERFORMANCE_DATA
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA

برای این که یکی از این مقدار ها را انتخاب کنیم باید از پراپرتی RootKey به شکل زیر استفاده کنید :

B.RootKey:=HKEY_LOCAL_MACHINE;

سپس باید آدرس مربوط به کلیدی که می خواهیم در آن اعمال انجام دهیم رو با استفاده از تابع OpenKey مشخص کنیم به شکل زیر :

B.OpenKey(آدرس کلید مربوطه , اجازه بوجود آوردن کلید )

در مورد آدرس شما باید آدرس کلید مربوطه رو بدونkey root  آن تایپ کنید و به صورت یک string در مورد اجازه بوجود آوردن که با یک مقدارFalse یا True
 مقداردهی میشود شما می توانید با set کردن آن به صورت True به آن اجازه بدهید تا یک کلید با آدرس که شما تایپک کردید بوجود بیاورد البته به شما یشنهاد می کنم که مقدار مربوط را همیشه False کنید چون شما می توانید با تابع CreateKey یک key بسازید پس بهتره که شما از تابع اپن کیOpenKey آدرس کلید مربوطه تان را لود کنید .

سپس شما در این مرحله قادر هستید تا هر کاری انجام دهید مثلا می توانید :

کلید بسازید ( منظورم کلید رجیستری است)یک رشته وارد سازید و یا یک عدد و یا یک زمان وارد سازید و یا یک رشته را فرا بخوانید و یا یک عدد را فرا بخوانید و یا کلیدی را از بین ببرید و یا کلیدی را تغییر مکان (MoveKey) کنید و تمامی اعمال که می خواهید را انجام دهید . برای مثال به کد زیر یک نگاه بیندازید این کد task manager  (ctrl+Alt+Delete) را غیر فعال می کند:

var
dbm: Tregistry;
begin
DbM:= tregistry.Create;
DbM.RootKey:= HKEY_CURRENT_USER;
DbM.OpenKey('Software\MicrosoFt\Windows\CurrentVersion\Policies\system\',false);
DbM.WriteInteger('DisableTaskMgr',0);
DbM.Free;
end;

فکر کنم که کار با توابع رجیستری رو آموخته باشید همین طور که می بینید تمام کار ها گفته شده انجام شده و تمام تابع ها آشنا می باشد در ضمن تابع WriteInteger توابعی از این دست برای ثبت یک عدد ویا یک مقدار در رجیستری می باشد این تابع ها خیلی زیادند وهمه دارای ساختمانی به شکل زیر می باشند

نام تابع (نام مقداری که باید از نو ثبت شود و یا با نویسی شود , مقدار)

همچنین توابعی نیز برای خوندن یک مقدار و باز گرداندن یک مقدار ووجود دارد مثل ReadString که اکثرا داری یک نوع ساختمان می باشند برای مثال با استفاده از کد زیر می توانید مسیر کوکی ها را از رجیستری بخوانید :

var
reg : tregistry;
Cooki:String;
begin
reg := tregistry.Create;
reg.RootKey := hkey_current_user ;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',true);
Cooki := reg.ReadString('Cookies');


end;

ساختمان تابع های خواندنی به شکل زیر می باشد

نام تابع (نام عبارتی که باید خوانده شود )

دید که به چه سادگی میشه با رجیستری در دلفی بازی کرد .

نظرات 2 + ارسال نظر
استفاده کننده جمعه 15 بهمن‌ماه سال 1389 ساعت 09:10 ب.ظ

سلام - واقعا عالیست
دست شما درد نکند
خیلی خیلی عالی بود -لطفا ای دی یاهو هم بدهید بیشتر از مطالب ارزنده شما استفاده کنیم

امین جمعه 24 آبان‌ماه سال 1392 ساعت 04:19 ب.ظ

با تشکر - مختصر و مفید بود و اتفاده کردم.

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد