در سایت مطالب زیادی دیدم ولی ...
چگونه میتوان کلیک موس را شبیه سازی کرد که برنامه فکر کند کلید موس نگه داشته شده
تشکر![]()
در سایت مطالب زیادی دیدم ولی ...
چگونه میتوان کلیک موس را شبیه سازی کرد که برنامه فکر کند کلید موس نگه داشته شده
تشکر![]()
مثلا دکمه چپ موس روی TestButton :
PostMessage(TestButton.Handle, WM_LBUTTONDOWN, MK_LBUTTON, 0);
فکر کنم احتیاج به توضیح نداره.
احتمالاً میخوای "فرو رفتگی" یه Button رو نشون بدی :
دو تا Button بذار روی فرم،
تو OnClick دکمه 1 بنویس :
var
Mouse_Pos: TPoint;
begin
Mouse_Pos := Point(Button2.Left + 5, Button2.Top + 5);
Mouse_Pos := ClientToScreen(Mouse_Pos);
SetCursorPos(Mouse_Pos.X, Mouse_Pos.Y);
Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
end;
procedure SendLeftButtonClick(X, Y: Integer);
var
ClientX, ClientY: Integer;
Window, Parent: HWnd;
WindowRect: TRECT;
begin
// Set the cursor position to the specified X, Y coordinates.
//
SetCursorPos(X, Y);
// Get the window at that X, Y coordinates.
// (does not get handle to hidden or disabled windows)
//
Window := WindowFromPoint(Point(X, Y));
// Was there a window at that coordinate?
//
if (Window <> 0) then begin
// Get the TRect (top, left, bottom, right coordinates).
//
GetWindowRect(Window, WindowRect);
// And translate the X, Y screen coordinates into the client's
// X, Y coordinates.
//
ClientX := X - WindowRect.Left;
ClientY := Y - WindowRect.Top;
// Get the parent root window.
//
Parent := GetAncestor(Window, GA_ROOT);
if (Parent = 0) then
Parent := Window;
// Check to see if the parent window is already the
// foreground window. If no make it the foreground window.
//
if (Parent <> GetForegroundWindow()) then begin
SetForegroundWindow(Parent);
end;
// Do a left-button click.
//
SendMessage(Window, WM_LBUTTONDOWN, MK_LBUTTON, ClientX or (ClientY shl 16));
SendMessage(Window, WM_LBUTTONUP, 0, ClientX or (ClientY shl 16));
end;
end;
آخرین ویرایش به وسیله m-khorsandi : یک شنبه 05 آذر 1385 در 12:41 عصر
دوست عزیز سعی کنید کدها رو تو تگ کد بگذارید به این شکل باید استفاده کنید."[code...[/code]" البته [ را هم بگذارید .
در این صورت کد شما به شکل زیر نمایش داده می شه.
procedure SendLeftButtonClick(X, Y: Integer);
var
ClientX, ClientY: Integer;
Window, Parent: HWnd;
WindowRect: TRECT;
begin
// Set the cursor position to the specified X, Y coordinates.
//
SetCursorPos(X, Y);
// Get the window at that X, Y coordinates.
// (does not get handle to hidden or disabled windows)
//
Window := WindowFromPoint(Point(X, Y));
// Was there a window at that coordinate?
//
if (Window <> 0) then begin
// Get the TRect (top, left, bottom, right coordinates).
//
GetWindowRect(Window, WindowRect);
// And translate the X, Y screen coordinates into the client's
// X, Y coordinates.
//
ClientX := X - WindowRect.Left;
ClientY := Y - WindowRect.Top;
// Get the parent root window.
//
Parent := GetAncestor(Window, GA_ROOT);
if (Parent = 0) then
Parent := Window;
// Check to see if the parent window is already the
// foreground window. If no make it the foreground window.
//
if (Parent <> GetForegroundWindow()) then begin
SetForegroundWindow(Parent);
end;
// Do a left-button click.
//
SendMessage(Window, WM_LBUTTONDOWN, MK_LBUTTON, ClientX or (ClientY shl 16));
SendMessage(Window, WM_LBUTTONUP, 0, ClientX or (ClientY shl 16));
end;
end;