delphi4arab منتديات دلفي للعرب
سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : سؤال بخصوص التلاعب فى البرامج الاخرى...؟ (/showthread.php?tid=5197)

الصفحات: 1 2


سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - karika2 - 06-05-2013

بسم الله الرحمن الرحيم
لقد أطعلت على الرابط http://delphi4arab.net/forum/showthread.php?tid=1098 وأستفد منة الكثير ولكن عند التلاعب ببعض البرامج بأأستحدام برنامج Win X_1.3.exe لجلب الكلاس لا يأتى لى بأسم النافذة أو بالاحرى يأتى الكلاس نيم عبارة عن أرقام وعند وضع هذة الارقام فى FindWindow لا يفعل شيئاّ هل فى طريقة من لمعرفة أسم النافذة بطريقة أحترافية أفضل..


سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - SMP3 - 06-05-2013

كيف FindWindow لا يفعل شيئا !!!
ممكن توضح أكثر أو تضع مثال ؟
بالنسبة لاسم النافذة WindowText فليس شرط أن تحتوي على اسم ..



سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - karika2 - 06-05-2013

SMP3 كتب :كيف FindWindow لا يفعل شيئا !!!
لا يفعل شيئاّ لأنه على ما أعتقد أسم النافذة وهمى أو لا يتتطابق...
جرب أخى بنفسك على برامج الانتى فيرس بأأستخدام برنامج Win X_1.3.exe وحاول أفعل أى شئ فية وأذا كان هناك جديد أنا فى أنتظارك أخى الكريم ...!


سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - SMP3 - 06-05-2013

لقد قمت بالتجريب و ليس هناك أي مشكل !!
كمثال :
PHP كود :
var hWin:THandle ;
begin
hWin
:= FindWindow('#32770',0);
Caption:=IntToHex(hWin,8);
end; 



سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - ALmuhhnad - 08-05-2013

السلام عليكم ورحمة الله وبركاتة

ربما يتم تغيير الكلاس او اسم النافذة ... بعد كل إعادة تشغيل ...


سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - karika2 - 08-05-2013

أخى لقد علمت السبب ولكنى لا أعلم العلاج والسبب هو أن X الخاص بأغلاق النافذة محجر أو غير مفعل لذلك عند وضع الامر WM_CLOSE لا يفعل شيئاّ أما مع باقى النوافذ التى فيها x مفعل يتم أغلاق النافذة هل يوجد أمر بديل يقوم بأغلاق النافذة او أخفائها WM_؟


سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - ALmuhhnad - 08-05-2013

لإخفاء النافذة نستعمل الامر :
PHP كود :
var
  
WinHandle : HWND
begin
  WinHandle 
:= FindWindow('','TitleWindow');
  
ShowWindow(WinHandle,SW_HIDE)
end; 
لإظهار النافذة نستعمل الامر :
PHP كود :
var
  
WinHandle : HWND
begin
  WinHandle 
:= FindWindow('','TitleWindow');
  
ShowWindow(WinHandle,SW_SHOW)
end; 

لإغلاق البرنامج او عملية تعمل حالياً نستعمل :
PHP كود :
TerminateProcess(dwhProcess,0) // dwhProcess = HandleProcess ... you can get it by function OpenProcess 

وجميع الدوال التي استعملناها من دوال API ...


سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - SMP3 - 08-05-2013

السبب الحقيقي هو وجود فلترة لرسائل الوينداوز التي يستقبلها التطبيق
جرب أن تقوم باستخدام الدالة TerminateProcess
PHP كود :
Function KillWindow(Wnd: THandle): Bool;
var
  
ProcessHandle: THandle;
  
PID: DWORD;
begin
  Result 
:= False;
  if 
Wnd = INVALID_HANDLE_VALUE then
    
Exit;

  
GetWindowThreadProcessId(Wnd, PID);
  
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  
Result := TerminateProcess(ProcessHandle, 0);
  
CloseHandle(ProcessHandle);
end; 
مثال :
PHP كود :
KillWindow(Handle); 



سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - karika2 - 10-05-2013

ALmuhhnad كتب :لإخفاء النافذة نستعمل الامر :
PHP كود :
var
  
WinHandle : HWND
begin
  WinHandle 
:= FindWindow('','TitleWindow');
  
ShowWindow(WinHandle,SW_HIDE)
end; 
API ...

أخى العزيز بالرغم من سهولة الكود الا أننى لم أفلح فى تنفيذة ( أعذرنى لسة مبتدئ) حولت أطبق هذا الامر على البرنامج ya h o o messenger ولكن سؤالى الاول هل عنوان النافذة titlewindow هى ثاتها الكلاس التى تأتى من خلال الكود هذا
كود :
var p: TPoint ; hWin:THandle; begin GetCursorPos(p); hWin:=WindowFromPoint(p); Caption:=IntToHex(hWin,8); lbl1.Caption:=form1.Caption; end;
وحتى لا أكثر من أسئلتى وأزعجكم **** انك ترفق لى مثال حتى أتمرن علية وجزاك الله كل خير ...!


سؤال بخصوص التلاعب فى البرامج الاخرى...؟ - ALmuhhnad - 10-05-2013

لنفرض انك تريد ان تخفي نافذة مااء ...

ماذا تحتاج ؟
مقبض النافذة وهو نوع HWND او THandle ... في الحقيقة كل هذه الانواع تشير إلى النوع NativeUInt
وعندما نحصل على هذا المقبض تكون النافذة كما لو انها بقضبة برنامجك Smile ( من اسمها مقبض )

كيف نحصل على مقبض النافذة ؟
يوجد عدة طرق من خلال استعمال دوال API... وجميع هذه الطرق تريد معلومات عن النافذة , بعذها يطلب عنوان النافذة
واسم الكلاس كما هو الحال في FindWindow ... وآخر هي التي تحصل على معلوماتها بنفسها مثل GetForegroundWindow فهي تاخذ النافذة المفعلة او النشطة حالياً ... وغيرها الكثير من الطرق للحصول على مقبض النافذة

مثال للحصوال على مقبض النافذة من خلال الدالة FindWindow
الدالة تحتاج معلومتين او بارمترين للتجلب لنا المقبض الخاص بالنافذة التي قدمنا معلوماتها لدالة ...
المعلومة الاول او البارمتر الأول : IpClasseName
هذا يعني عنوان النافذة , نحصل عليه من كود آخر ... ( ابحث بالمنتدى ) ... او تستتطيع ان تجلبه من خلال برامج خارجية مثل WinSpy

المعلومة الثانية او البارمتر الثاني : IpWindowName
هذا يعني اسم الصنف ... وهو مهم لكي يتعامل النظام مع النافذة وهذا نحصل عليه كذلك من كود آخر او نستطيع الحصول عله كذلك من برنامج WinSpy او غيره ...

بعد ان حصلنا على المعلومات او البارمترات نكتب الكود التالي :
PHP كود :
var
  
HandleWindow : THandle;
begin
  HandleWindow 
:= FindWindow('','ya h o o messenger');
  
ShowWindow(HandleWindow,SW_HIDE)
end; 
بعدها سيتم إخفاء النافذة .