PDA

View Full Version : تشخیص این که موس کجا و روی چه شیئی حرکت می کند؟



dkhatibi
چهارشنبه 06 اردیبهشت 1385, 21:22 عصر
آیا کسی راهی بلده که بتونیم با اون شیئی که موس روی اون حرکت می کنه را تشخیص داد و عنوان یا متن اون شی را خوند.لازم به ذکره که شی مورد نظر لزوما درون برنامه ی خودمان نیست.


همیشه گروهی کار کنیم
تا به نتیجه برسیم.

Arash_j13
پنج شنبه 07 اردیبهشت 1385, 04:20 صبح
با توابع Windows API می شه
با کمک GetCursorPos مکان فعلی آشاره گر رو بدست بیارید بعد به کمک WindowFromPoint هندل پنجره ای که اشاره گر ماوس برش قرار داره رو پیدا کنید بعد با داشتن هندل هر کاری می تونید بکنید مثلا با GetWindowText متن پنجره رو بخونید

dkhatibi
پنج شنبه 07 اردیبهشت 1385, 22:39 عصر
خوب امما با دانستن هندل می شه متن موجود بر روی دکمه را نیز خواند؟
چه گونه؟

delphi.net8
جمعه 08 اردیبهشت 1385, 00:05 صبح
windows.getWindowText(windows.FindWindowEx(findwin dow('shell_traywnd',nil),0,'button',0))
اینطوری میشه مثلا متن روی دکمه استارت رو خوند

امما منم یه سوال داشتم : فرض بگیریم دوتا دکمه داشته باشیم ! هندل دکمه دوم رو چطور بدست بیاریم؟

mamizadeh
جمعه 08 اردیبهشت 1385, 10:41 صبح
به نام خدای مهدی
با سلام
دوست عزیز روی یک تایمر بنویس


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;

mamizadeh
جمعه 08 اردیبهشت 1385, 10:47 صبح
اینم فایلش
اگه فیل در هم بر هم باشه شرمند ه ام
چون همین الان درست کردم

dkhatibi
شنبه 09 اردیبهشت 1385, 13:03 عصر
ین فایلی که ÷یوست کرده اید اشیای خارجی را به درستی تشخیص نمی دهد

dkhatibi
شنبه 09 اردیبهشت 1385, 20:17 عصر
یادتون نره مشکل هنوز حل نشده

dkhatibi
دوشنبه 11 اردیبهشت 1385, 13:22 عصر
لطفا اگه کسی راهی به ذهنش می رسه بگذاره تا امتحان کنیم

vcldeveloper
چهارشنبه 13 اردیبهشت 1385, 01:01 صبح
یادتون نره مشکل هنوز حل نشده

یادتون نره که متن هر شی ایی رو نمیشه با GetWindowText خوند. دقیقا می خواید چیکار کنید؟

dkhatibi
چهارشنبه 13 اردیبهشت 1385, 11:20 صبح
فرض کنید پنجره ای باز است(یک نرم افزار دلخواه) من موس را روی دکمه ای از آن نگاه می دارم یا روی آن کلیک می کنم می خواهم برنامه ی من Caption آن دکمه را تشخیص دهد. یا حتی اگر درون عنصری شبیه Edit هستم متن نوشته شده درون آن را بخوانم.

vcldeveloper
پنج شنبه 14 اردیبهشت 1385, 07:01 صبح
فرض کنید پنجره ای باز است(یک نرم افزار دلخواه) من موس را روی دکمه ای از آن نگاه می دارم یا روی آن کلیک می کنم می خواهم برنامه ی من Caption آن دکمه را تشخیص دهد. یا حتی اگر درون عنصری شبیه Edit هستم متن نوشته شده درون آن را بخوانم.

برای این منظور از همون از GetWindowText یا از پیغام WM_GETTEXT استفاده کنید.

dkhatibi
پنج شنبه 14 اردیبهشت 1385, 07:48 صبح
البته کارهایی که قبلا توضیح داده شده بود ا انجام دادم ولی در خوندن تمام caption به درستی مشکل داشت. اگه حال دارید یک برنامه بگذارید.

delphi.net8
جمعه 22 اردیبهشت 1385, 00:34 صبح
من یه سئوال دیگه هم تو همین مایه ها داشتم
راستش یه برنامه ای هست که بصورت ران تایم ایمیج ایجاد میکنم
تعداد ایمیج های ایجاد شده هم متغیره
میخوام کاربر کلیک روی هر ایمیج بتونه اونو ذخیره کنه
مشکل اینجاست که من اسم ایمیجی که کار بر روش کلیک کرده رو نمی دونم
گفتم شاید با این windowfrom point بشه کاری کرد
ضمنن برای نام امیج ها از ترکیب( image+inttostr(i استفاده کردم که i شمارنده حلقه است

vcldeveloper
جمعه 22 اردیبهشت 1385, 05:45 صبح
میخوام کاربر کلیک روی هر ایمیج بتونه اونو ذخیره کنه
مشکل اینجاست که من اسم ایمیجی که کار بر روش کلیک کرده رو نمی دونم

یک متد از نوع TNotifyEvent برای رویداد OnClick درست کنید :


...
private
procedure MyOnClick(Sender: TObject);
...

در هنگام ساختن Image ها به OnClick اونها مقدار MyOnClick بدید:


with MyImage.Create(Self) do
begin
...
OnClick := MyOnClick;
...
end;
در متد MyOnClick می تونید از کدی مثل کد زیر برای بدست آوردن نام یک کامپوننت استفاده کنید:


procedure MyOnClick(Sender: TObject);
begin
ImageName := (Sender as TComponent).Name;
end;

delphi.net8
جمعه 22 اردیبهشت 1385, 07:32 صبح
آقای کشاورز دستتون درد نکنه
ممنون