كيف اقوم بتغيير Class النافذة ؟
#1
السلام عليكم ورحمة الله وبركاتة

كيف اقوم بتغيير الـ Class الخاص بالنافذة عند تشغيل البرنامج كل مرة .. ؟
صورة توضيحيه :

.jpg   Tmain.jpg (الحجم : 46.93 ك ب / التحميلات : 40)
الهدف كي لا يتم إكتشاف نافذت برنامجي من خلال الدالة FindWindow
الرد
#2
في الحقيقة لن يمكنك ذلك بالطرق العادية .. لماذا ؟
لأنه عند ظهور نافذة البرنامج يقوم الوينداوز بحفظ مقبضها Hanlde و الكلاس الخاصة بها بعد تنفيذ RegisterClassEx
لذلك من المستحيل تغييرها وقت التشغيل -أعني عند ظهور النافذة -بطريقة مباشرة

الطرق الغير مباشرة هي قبل انشاء وظهور النافذة يمكنك تغيير كلاس الفورم .. يعني بداية كل تشغيل للبرنامج
PHP كود :
type
TForm1 
= class(TForm)
public
 
procedure  CreateParams(var Params: TCreateParams);  override ;
end;

procedure TForm1.CreateParams(var Params: TCreateParams);
var 
CN :PChar;
begin
inherited
;
  
// Random Number
  
CN:=PChar('NewClass'+Copy(IntToStr(GetTickCount),5,2));
  
StrPLCopy(Params.WinClassName,CN,High(Params.WinClassName));
end; 
أو يمكنك عند انشاء كائن جديد من الصنف TForm
PHP كود :
var
f:TForm1;
begin
 f
:=TForm1.Create(Application);
 
f.Show;
End; 
و على فكرة يمكنك أن تجعل الكلاس الخاص بالفورم TMain وتريح راسك ... أغلب البرامج النافذة الأساسية تحمل الكلاس TMain
الرد
#3
اهلا اخي المبرمج smp3 ... شكرا على التوضيح والاجابة Smile

كان بودي ان تضع تعليقات على الكود .. كي استطيع فهم ما يجري اثناء تنفيذ الاوامر

جزاك الله خير ووفقك لما يحبه ويرضااه
الرد
#4
ALmuhhnad كتب :كان بودي ان تضع تعليقات على الكود .. كي استطيع فهم ما يجري اثناء تنفيذ الاوامر
نقوم بعمل override للحدث CreateParams الخاص بالفورم
PHP كود :
procedure  CreateParams(var Params: TCreateParams);  override ; 
ثم نقوم بتوليد كلاس عشوائي يتغير في كل مرة نقوم بتشغيل البرنامج
PHP كود :
CN:=PChar('NewClass'+Copy(IntToStr(GetTickCount),5,2)); 
ثم نقوم بتغيير كلاس النافذة
PHP كود :
StrPLCopy(Params.WinClassName,CN,High(Params.WinClassName)); 
الرد
#5
وعليكم السلام ورحمة الله وبركاته
فكرة أخرى Hook لـ FindWindow/FindWindowEx
http://www.delphi4arab.net/forum/showthread.php?tid=949
لا أدري...
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم