كيف أحصل على أى مقبض لنافذة
#1
كيف أحصل على أى مقبض لنافذة فى الدلفى ...؟
الرد
#2
نعم ,استخدم FindWindow or FindWindowEx أو EnumWindows
الرد
#3
أخى العزيز اليك هذة الصورة توضيح أكثر
كود :
http://www6.0zz0.com/2013/03/26/14/863578310.jpg
أذا أعتبرنا أن برنامجى على الجانب الايمين والفورم الاسود لأى برنامج أخر...
عندما أضغط على زر فى برنامجى يقوم بتنظيف Edit1.text فى البرنامج الاخر هل هذة الفكرة مستحيلة أم أن شاء الله سهلة.
الرد
#4
بالطبع ليست مستحيلة !!
تفضل :
PHP كود :
var DLG :THandle;
begin
  DLG 
:=FindWindow(0,'Play');
  
DLG:= FindWindowEx(DLG,0,'TEdit',0);
  
SendMessage(DLG,WM_SETTEXT,0,LParam(PChar('')));
end
الرد
#5
أخى الكريم جربت الكود ولكن لم يصلح معى ممكن ترسلى المشروع أفضل .. او تحددلى ما هى الخطوات ربما أكون سهوت عن شئ ما.
الرد
#6
Play تمثل عنوان النافذة
TEdit الكلاس الخاص ب مكون Edit الذي تستعمله
الرد
#7
اشكرك جزيلاّ أخى
من قبل كان عندى مشروع بالفيجوال بمجرد مرور الفارة أحصل على عنوان النافذة ولكن تم فرمتت الجهاز من كل شئ واعيده مرة أخرى بلغة الدلفى.
الرد
#8
تفضل :
PHP كود :
procedure TForm1.Timer1Timer(SenderTObject);
var 
pTPoint ;
hWin:THandle;
begin
GetCursorPos
(p);
hWin:=WindowFromPoint(p);
Caption:=IntToHex(hWin,8);
end
الرد
#9
اخى بخصوص دالة 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;
ولكناى برنامج اخر خارج الدلفى ليس له أى تأثير
الرد
#10
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 ) ضيف كريم