delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف أحصل على أى مقبض لنافذة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
كيف أحصل على أى مقبض لنافذة فى الدلفى ...؟
نعم ,استخدم FindWindow or FindWindowEx أو EnumWindows
أخى العزيز اليك هذة الصورة توضيح أكثر
كود :
http://www6.0zz0.com/2013/03/26/14/863578310.jpg
أذا أعتبرنا أن برنامجى على الجانب الايمين والفورم الاسود لأى برنامج أخر...
عندما أضغط على زر فى برنامجى يقوم بتنظيف Edit1.text فى البرنامج الاخر هل هذة الفكرة مستحيلة أم أن شاء الله سهلة.
بالطبع ليست مستحيلة !!
تفضل :
PHP كود :
var DLG :THandle;
begin
  DLG 
:=FindWindow(0,'Play');
  
DLG:= FindWindowEx(DLG,0,'TEdit',0);
  
SendMessage(DLG,WM_SETTEXT,0,LParam(PChar('')));
end; 
أخى الكريم جربت الكود ولكن لم يصلح معى ممكن ترسلى المشروع أفضل .. او تحددلى ما هى الخطوات ربما أكون سهوت عن شئ ما.
Play تمثل عنوان النافذة
TEdit الكلاس الخاص ب مكون Edit الذي تستعمله
اشكرك جزيلاّ أخى
من قبل كان عندى مشروع بالفيجوال بمجرد مرور الفارة أحصل على عنوان النافذة ولكن تم فرمتت الجهاز من كل شئ واعيده مرة أخرى بلغة الدلفى.
تفضل :
PHP كود :
procedure TForm1.Timer1Timer(Sender: TObject);
var 
p: TPoint ;
hWin:THandle;
begin
GetCursorPos
(p);
hWin:=WindowFromPoint(p);
Caption:=IntToHex(hWin,8);
end; 
اخى بخصوص دالة FindWindow يتم تعريفها فى الفيجولهكذا
كود :
Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( ByVal lpClassName As String , ByVal lpWindowName As String ) As Integer
ولكن كيف أقوم بتعريفها فى الدلفى وفى اى مكان انا جربت الكود هذا
كود :
var dlg :thandle; begin dlg :=findwindow(0,'play'); dlg:= findwindowex(dlg,0,'tedit',0); sendmessage(dlg,wm_settext,0,lparam(pchar(''))); end;
ولكناى برنامج اخر خارج الدلفى ليس له أى تأثير
karika2 كتب :بخصوص دالة FindWindow يتم تعريفها فى الفيجول
من المنتقلين حديثا للدلفي Smile .. أحسن مافعلت .. , كنت أيضا مبرمج vb لكني انتقلت للدلفي سريعا Smile
بالنسبة لسؤالك فلن تحتاج الى تعريف دوال Api في دلفي , فأغلبها معرفة في الوحدة Windows.pas
على غرار الفيبي و التي تتطلب تعريف بالدالة ..
إقتباس :
كود :
var dlg :thandle; begin dlg :=findwindow(0,'play'); dlg:= findwindowex(dlg,0,'tedit',0); sendmessage(dlg,wm_settext,0,lparam(pchar(''))); end;
الكود ضعه مثلا في حدث ButtonClick على سبيل المثال Big Grin
يجب التنويه أن الكلاس الخاص بالأداة Edit هو TEdit و سيختلف الكلاس من لغة برمجة لأخرى مثلا الدوت نت TextBox .. الخ , لذلك ممكن أن الكود لن يعمل معك اذا أرسلت له كلاس خاطئ ..
ان تكلما عن ال IDM فليس هناك صندوق نص Edit .. هناك ListView ===> Class :SysListView32
الصفحات : 1 2