آیا کسی راهی بلده که بتونیم با اون شیئی که موس روی اون حرکت می کنه را تشخیص داد و عنوان یا متن اون شی را خوند.لازم به ذکره که شی مورد نظر لزوما درون برنامه ی خودمان نیست.
همیشه گروهی کار کنیم
تا به نتیجه برسیم.
آیا کسی راهی بلده که بتونیم با اون شیئی که موس روی اون حرکت می کنه را تشخیص داد و عنوان یا متن اون شی را خوند.لازم به ذکره که شی مورد نظر لزوما درون برنامه ی خودمان نیست.
همیشه گروهی کار کنیم
تا به نتیجه برسیم.
با توابع Windows API می شه
با کمک GetCursorPos مکان فعلی آشاره گر رو بدست بیارید بعد به کمک WindowFromPoint هندل پنجره ای که اشاره گر ماوس برش قرار داره رو پیدا کنید بعد با داشتن هندل هر کاری می تونید بکنید مثلا با GetWindowText متن پنجره رو بخونید
خوب امما با دانستن هندل می شه متن موجود بر روی دکمه را نیز خواند؟
چه گونه؟
windows.getWindowText(windows.FindWindowEx(findwin dow('shell_traywnd',nil),0,'button',0))
اینطوری میشه مثلا متن روی دکمه استارت رو خوند
امما منم یه سوال داشتم : فرض بگیریم دوتا دکمه داشته باشیم ! هندل دکمه دوم رو چطور بدست بیاریم؟
به نام خدای مهدی
با سلام
دوست عزیز روی یک تایمر بنویس
procedure TForm1.Timer1Timer(Sender: TObject);
Var p : TPoint;
h : THandle;
buf : Array[0..255] of Char;
begin
GetCursorPos(p);
h := WindowFromPoint(p);
SendMessage(h, WM_GETTEXT, 255, Integer(@Buf));
Form1.Caption := Buf;
end;
اینم فایلش
اگه فیل در هم بر هم باشه شرمند ه ام
چون همین الان درست کردم
ین فایلی که ÷یوست کرده اید اشیای خارجی را به درستی تشخیص نمی دهد
یادتون نره مشکل هنوز حل نشده
لطفا اگه کسی راهی به ذهنش می رسه بگذاره تا امتحان کنیم
یادتون نره که متن هر شی ایی رو نمیشه با GetWindowText خوند. دقیقا می خواید چیکار کنید؟یادتون نره مشکل هنوز حل نشده
فرض کنید پنجره ای باز است(یک نرم افزار دلخواه) من موس را روی دکمه ای از آن نگاه می دارم یا روی آن کلیک می کنم می خواهم برنامه ی من Caption آن دکمه را تشخیص دهد. یا حتی اگر درون عنصری شبیه Edit هستم متن نوشته شده درون آن را بخوانم.
برای این منظور از همون از GetWindowText یا از پیغام WM_GETTEXT استفاده کنید.فرض کنید پنجره ای باز است(یک نرم افزار دلخواه) من موس را روی دکمه ای از آن نگاه می دارم یا روی آن کلیک می کنم می خواهم برنامه ی من Caption آن دکمه را تشخیص دهد. یا حتی اگر درون عنصری شبیه Edit هستم متن نوشته شده درون آن را بخوانم.
البته کارهایی که قبلا توضیح داده شده بود ا انجام دادم ولی در خوندن تمام caption به درستی مشکل داشت. اگه حال دارید یک برنامه بگذارید.
من یه سئوال دیگه هم تو همین مایه ها داشتم
راستش یه برنامه ای هست که بصورت ران تایم ایمیج ایجاد میکنم
تعداد ایمیج های ایجاد شده هم متغیره
میخوام کاربر کلیک روی هر ایمیج بتونه اونو ذخیره کنه
مشکل اینجاست که من اسم ایمیجی که کار بر روش کلیک کرده رو نمی دونم
گفتم شاید با این windowfrom point بشه کاری کرد
ضمنن برای نام امیج ها از ترکیب( image+inttostr(i استفاده کردم که i شمارنده حلقه است
یک متد از نوع TNotifyEvent برای رویداد OnClick درست کنید :میخوام کاربر کلیک روی هر ایمیج بتونه اونو ذخیره کنه
مشکل اینجاست که من اسم ایمیجی که کار بر روش کلیک کرده رو نمی دونم
...
private
procedure MyOnClick(Sender: TObject);
...
در هنگام ساختن Image ها به OnClick اونها مقدار MyOnClick بدید:
در متد MyOnClick می تونید از کدی مثل کد زیر برای بدست آوردن نام یک کامپوننت استفاده کنید:
with MyImage.Create(Self) do
begin
...
OnClick := MyOnClick;
...
end;
procedure MyOnClick(Sender: TObject);
begin
ImageName := (Sender as TComponent).Name;
end;
آخرین ویرایش به وسیله vcldeveloper : جمعه 22 اردیبهشت 1385 در 06:50 صبح
آقای کشاورز دستتون درد نکنه
ممنون