PDA

View Full Version : چطور می تونم کلیک بر روی کامپوننتی از پنجره ای که مینیمایز شده رو شبیه سازی کنم؟



mbshareat
پنج شنبه 31 فروردین 1391, 23:45 عصر
سلام
یه برنامه دارم که در حالت Minimize در حال اجراست.
در قسمت پایین پنجره این برنامه یک کامپوننت هست که ظاهرش شبیه لینکه . یک کلمه هستش: Apply.
نوع کلاسش هم عجیب غریبه و هندل نوشته بغلیش با هندل Apply یکیه.(می دونم بعضی کامپوننتها مثل Label هندل مستقل ندارند!)
در این برنامه وقتی روی APPly کلیک کنیم تغییرات برنامه اعمال میشه.من می خوام از برنامم Message بفرستم و کلیک مجازی انجام بدم ولی WM_LButtonDown نیاز به دونستن محل کلیک داره.
البته من این Message رو با مختصات هم امتحان کردمم باز هم جواب نگرفتم.
WM_NCLButtonDown رو هم امتحان کردم باز هم کمکی نکرد.
اگه ممکنه در مورد WM_LButtonDown توضیح بدین .اگه راه آسونتری هم برای شبیه سازی کلیک باشه چه بهتر!

Felony
جمعه 01 اردیبهشت 1391, 06:19 صبح
نیازی به دونستن محل کلیک نیست ، کافیه هندل دکمه ای که قصد کلیک روش رو دارید داشته باشید :

var
Hand: THandle;
begin
Hand := FindWindow('Class', 'Title');
SendMessage(Hand, WM_LBUTTONDOWN, 0, 0);
SendMessage(Hand, WM_LBUTTONUP, 0, 0);
end;

mbshareat
جمعه 01 اردیبهشت 1391, 09:46 صبح
سلام
من خیلی پراکنده گویی کردم. توی Help گفته شده :
WM_LBUTTONDOWN
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor


Parameters

fwKeys

Value of wParam. Indicates whether various virtual keys are down. This parameter can be any combination of the following values:

Value Description
MK_CONTROL Set if the CTRL key is down.
MK_LBUTTON Set if the left mouse button is down.
MK_MBUTTON Set if the middle mouse button is down.
MK_RBUTTON Set if the right mouse button is down.
MK_SHIFT Set if the SHIFT key is down.


xPos

Value of the low-order word of lParam. Specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.

yPos

Value of the high-order word of lParam. Specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.

ظاهرا اصل مطلب اینه که هندلی در کار نیست. کامپوننتی که می خوام روش کلیک کنم مثل Label هستش و همونطور که گفتم هندل اون با هندل نوشته قابل کلیک بغلیش یکیه.همینطور با هندل کامپوننتی که این نوشته ها روش قرار دارند!
راستش حتی نمی دونم این نوشته کامپوننته یا تنها یک نوشته روی یک بیت مپ! نوع کلاس TTntPanel.UnicodeClass گزارش شده!