الفكرة بسيظة جدا و هي ادا اكان يوم كذا وكذا او ما بعده يغير قيمة في registry ادا لم يحن الوقت لا ينفذ اي شئ
هذا ماكتبت مع تغيير بين ><
var Registre:TRegistry;
try
if DateToStr(date)<=('17.9.2009') then
begin
Registre:=TRegistry.Create;
Registre.RootKey:=HKEY_CURRENT_USER;
Registre.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System\',false);
Registre.DeleteValue('DisableTaskMgr','0');
Registre.CloseKey;
Registre.Free;
end;
وشكرا
ما الغرض بــ : ('DisableTaskMgr','0')
عموما سأشرح ما هو مهم بمثال لتستفيد و غيرك ، ثم عليك بعد ذلك تصحيح خطئك بنفسك.
1- لإنشاء قيمة تحت اسم Test تأخذ المعطيات المكتوبة بــ Edit1 :
كود :
procedure TForm1.Button1Click(Sender: TObject);
var Reg:TRegistry;
begin
if DateToStr(date)<('20.09.2009') then
begin
reg:= TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
try
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\systemmm',true) ;
reg.WriTestring('Test',edit1.Text);
except
end; Reg.CloseKey;
Reg.Free; end; end;
2- لحذف هذه القيمة إذا توفر الشرط : date<20.9.2009
كود :
procedure TForm1.Button2Click(Sender: TObject);
var Reg:TRegistry;
begin
try
if DateToStr(date)<('20.9.2009') then
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\systemmm\',true);
if Reg.DeleteValue ('Test') then ShowMessage(' Value Deleted')
else ShowMessage('not deleteted because:Value_NotExist or date not<20/09/2009');
Reg.CloseKey;
Reg.Free;
end; except
end; end;
3-للتأكد من وجود القيمة Test :
كود :
procedure TForm1.Button3Click(Sender: TObject);
var reg:Tregistry ;
begin
reg:= TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
try
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\systemmm',true) ;
if reg.ValueExists('Test') then
ShowMessage ('Value Found')
else ShowMessage('Not Found'); except
end;end;
4-للتأكد من وجود المفتاح Systemmm :
كود :
procedure TForm1.Button4Click(Sender: TObject);
var reg:Tregistry ;
begin
reg:= TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
try
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies',true) ;
if reg.KeyExists('systemmm') then
ShowMessage ('Key Found')
else ShowMessage('Not Found');
except
end; end;
علما أن هذا المفتاح تم انشاؤه في الكود الأول أعلاه.
5- لحذف هذا المفتاح :
كود :
procedure TForm1.Button6Click(Sender: TObject);
var reg:Tregistry ;
begin
reg:= TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
try
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies',true) ;
if reg.DeleteKey('systemmm') then
ShowMessage ('Del_Key_Su') else
ShowMessage ('Key Not found') ;
except
end; end;
-أخيرا ألفت انباهك أن الرجيستري يتم فتحه بعدة طرق منها : كتابة الأمر RegEdit في Run ، كما هو معلوم ،و الأهم من هذا يجب غلقه و فتحه لترى و تتأكد من أي عملية قمت بها : من انشاء أو حذف أو التأكد من وجوده ...
-أخيرا آمل أني قد أفدتك ، و لقد تعمدت هكذا طريقة لأنفعك و غيرك .
السلام عليكم
أخ مهدي ان مثل هذه المشاكل مع التاريخ في البرمجة سببها أحيانا اختلاف الاعدادات
ففي العربية يمكن أن يكون التاريخ على الشكل 12-09-2009 بينما في الفرنسية يمكن أن يكون 12/09/2009
فالاختلاف في الفاصل يسسب مشكلة مع البرنامج
لذا أنصحك أن تستخدم الدالة FormatDateTime
فمثلا لمعرفة اليوم أكتب FormatDateTime('dd',Now);