المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
السلام عليكم ورحمة الله وبركاتة
كيف اقوم بتغيير الـ Class الخاص بالنافذة عند تشغيل البرنامج كل مرة .. ؟
صورة توضيحيه :
Tmain.jpg (الحجم : 46.93 ك ب / التحميلات : 40)
الهدف كي لا يتم إكتشاف نافذت برنامجي من خلال الدالة FindWindow
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
في الحقيقة لن يمكنك ذلك بالطرق العادية .. لماذا ؟
لأنه عند ظهور نافذة البرنامج يقوم الوينداوز بحفظ مقبضها 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
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
اهلا اخي المبرمج smp3 ... شكرا على التوضيح والاجابة
كان بودي ان تضع تعليقات على الكود .. كي استطيع فهم ما يجري اثناء تنفيذ الاوامر
جزاك الله خير ووفقك لما يحبه ويرضااه
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
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));
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام ورحمة الله وبركاته
فكرة أخرى Hook لـ FindWindow/FindWindowEx
http://www.delphi4arab.net/forum/showthread.php?tid=949
لا أدري...
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...