Autoklikanie
fatalbomb
Prezentowany kod powstał z potrzeby chwili. Otóż używam MilkyTrackera do produkcji muzyki i musiałem ustawić długość patternu z 64 (40h) do 256 (100h). Kto używa tego programu, wie, że aby ustawić długość patternu (czy szybkość, BPM czy cokolwiek innego) trzeba klikać cierpliwie w przycisk plus albo minus, a nie ma powtarzania.
Nie chciało mi się robić prawie dwustu klików, więc szybciej mi zajęło napisanie czegoś takiego:
procedure TForm1.Timer1Timer(Sender: TObject);
var C:TPoint;
X:Byte;
begin
if GetKeyState (VK_SCROLL) <> 0 then begin
GetCursorPos (C);
for X := 1 to 16 do begin
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, C.x, C.y, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, C.x, C.y, 0, 0);
end;
end;
end;
Działa to w ten sposób: program uruchamiamy w tle (w OnCreate można napisać Application.ShowMainForm := false;). Gdy zajdzie potrzeba klikania w miejscu, włączamy ScrollLock. W przykładzie dla każdego obrotu pętli w timerze (Interval = 500) symulujemy 16 kliknięć - w MT odpowiada to dołożeniu jednego taktu, czyli 16 wierszy do patternu. Naciskając jeszcze raz ScrollLock wyłączamy autoklik i działamy dalej.
@pkkm:
keybd_event(ord(#13), 0, 0, 0);
keybd_event(ord(#13), 0, KEYEVENTF_KEYUP, 0);
a jak zrobić autonaciskanie klawisza Enter?