No proszę Cię. Rozumiem jakaś gimbaziarska lameria, ale żebyś Ty pisał jakieś herezje o skrypcie. Nawet nie wolno tak pisać doświadczonemu userowi, jako skrót myślowy. Delphi to nie AutoHotKey czy AutoIt albo coś tego typu :/ Natomiast co do kliknięcia, jeśli kontrolka jest na pierwszym planie, to kod powinien zadziałać. Ewentualnie może na poniższy kod zareeaguje lepiej - spróbuj. Bo o ile pamiętam to mouse_event
jak i keybd_event
zdaje się, z tego co sugerują na MSDN, są przestarzałe. I należy raczej korzystać z SendInput
.
//...
type
TMouseButton = (mbLeft, mbRight, mbMiddle);
procedure MouseDownUp(MouseButton : TMouseButton; ButtonDown : boolean);
const
Mouse_Up_Arr : array[TMouseButton] of DWORD =
(MOUSEEVENTF_LEFTUP, MOUSEEVENTF_MIDDLEUP, MOUSEEVENTF_RIGHTUP);
Mouse_Down_Arr : array[TMouseButton] of DWORD =
(MOUSEEVENTF_LEFTDOWN, MOUSEEVENTF_MIDDLEDOWN, MOUSEEVENTF_RIGHTDOWN);
var
MP : TPoint;
Input : TInput;
begin
Windows.GetCursorPos(MP);
Input.Itype := INPUT_MOUSE;
if not ButtonDown then
begin
Input.mi.dwFlags := Mouse_Up_Arr[MouseButton];
end
else
begin
Input.mi.dwFlags := Mouse_Down_Arr[MouseButton];
end;
Input.mi.dx := MP.X;
Input.mi.dy := MP.Y;
Input.mi.time := 0;
Input.mi.dwExtraInfo := 0;
SendInput(1, Input, SizeOf(Input));
end;