delphi4arab منتديات دلفي للعرب
كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground (/showthread.php?tid=5090)



كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground - DJAMELCOLLO - 31-03-2013

كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و groundhand
تبعا لمؤشر الفأرة


كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground - ALmuhhnad - 31-03-2013

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

هل تريد ان تقوم بتحديد عملية وبعد ذلك تعرف النوافذ الخاصة بها ومقابضها واسماء الاصناف ... مثل برامج الـ SpyWindow ?


كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground - DJAMELCOLLO - 31-03-2013

انا كان عندي برنامج لما تمر الفأرة فوق عنصر في النافدة تعطيني تلك الأمور


كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground - SMP3 - 31-03-2013

تفضل أخي .. فقط أضف تايمر Smile
PHP كود :
procedure TForm1.Timer1Timer(Sender: TObject);
var 
p: TPoint ;
hWin:THandle;
CN: PChar;
begin
GetCursorPos
(p);
hWin:=WindowFromPoint(p);
Caption:=IntToHex(hWin,8);
GetMem(CN,250);
Windows.GetClassNameA(hWin,CN,250);
Edit1.Text:=CN;
Edit2.Text:=IntToHex(GetForegroundWindow,8);
FreeMem(CN,250);
end; 



كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground - ALmuhhnad - 31-03-2013

جيد ... الطريقة سهله جداً ... فقط تحتاج بعض الاسطر والقيل من الفهم ...

سنضع الكود في مكون Timer حيث سيتم جلب موقع الماوس وبعد ذلك جلب الهاندل والمعلومات التي تتعلق به

في البداية نحتاج جلب مقبض النافذة(Handle Window) التي يمر عليها الماوس وساذكر احد الاكواد التي كتبها
أخي المبرمج SMP3 في احد المواضيع
كود جلب مقبض النافذة :
PHP كود :
procedure TForm1.tmr1Timer(Sender: TObject);
var
  
PositionMouse : TPoint;
  
HandleWindow : THandle;
begin
  GetCursorPos
(PositionMouse);
  
HandleWindow := WindowFromPoint(PositionMouse);
end; 

والآن بعد ان حصلنا على مقبض النافذة ...
من المقبض سنخرج اسم الصنف ( ClassName )
وكذلك عنوان النافذة ( WindowTitle )
وايضاً رقم العملية ( ProcessId )

والباقي عليك Smile

نكمل الكود السابق بهذا الكود ونكون قد حصلنا على المعلومات السابقة :

PHP كود :
procedure TForm1.tmr1Timer(Sender: TObject);
var
  
PositionMouse : TPoint;
  
HandleWindow : THandle;
  
sLen : Integer;
  
sWindow : String;
  
dwProcessId : Cardinal;
begin
  GetCursorPos
(PositionMouse);
  
HandleWindow := WindowFromPoint(PositionMouse);          // Here we get Handle Window

  
SetLength(sWindow,255);                                  //
  
GetClassName(HandleWindow,PChar(sWindow),255);           // Here we get Class Name ...
  
edtClassName.Text := sWindow;                            //

  
sLen := GetWindowTextLength(HandleWindow);               //
  
SetLength(sWindow,sLen);                                 // Here we get Window title ...
  
GetWindowText(HandleWindow,PChar(sWindow),sLen + 1);     //
  
edtWindowTitle.Text := sWindow;                          //

  
GetWindowThreadProcessId(HandleWindow, @dwProcessId);    //
  
edtProcessId.Text := IntToStr(dwProcessId);              // Here we get ProcessId ...
end; 

كما ترى العملية كانت سهله .. بينما البعض يضن انها ساطر كثيرة Smile

بالتوفيق آخي

والسلام عليكم


كيف اعرف مقبض النافذة واسم القسم classname والنافذة المفعلة focusedhand و ground - ALmuhhnad - 31-03-2013

هههه يبدو ان اخي المبرمج smp3 سبقني ... على العموم المعلومة وصلت وهذا هو المهم