Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Macro w autoit


Rekomendowane odpowiedzi

Opublikowano

Cześć czy ktoś mógłby mi wykonać macro w autoin ? wiem że to kilka linijek kodu ale kompletnie nie ogarniam tego :/

 

Chce żeby podczas TRZYMANIA lewego przycisku myszki co 1 ms klikało w myszkę.

Opublikowano

Tego się nie da zrobić. Maksimum to jakieś 20ms na kliknięcie.

$hStart = TimerInit() ;inicjacja timera
MouseClick("")
MouseClick("")
MouseClick("")
MouseClick("")
MouseClick("")
MouseClick("")
MouseClick("")
MouseClick("")
MouseClick("")
MouseClick("")
$iTD = TimerDiff($hStart) ;koniec odliczania czasu
MsgBox(0, "Test klikania:", "Czas na kliknięcie: " & $iTD/10 & " ms" )
Opublikowano

@wasta te ms to był przykład potem sobie zmienie. ale skrypt chyba nie działa poprawnie bo gdy trzymam LPM to nic się nie dzieje a te okienko wyskakuje. a wgl po to ten timer ? w AutoHotKey wygląda to tak:

F4::Suspend
$LButton::
    While GetKeyState("LButton","P"){
        Click
        Sleep 1 ; milliseconds
Opublikowano

Skrypt, który poprzednio wstawiłem to tylko demonstracja pokazująca, że nie da się klikać częściej niż raz na 20ms. A timer jest po to aby zmierzyć ten czas.

 

Jeżeli zaś chodzi o klikanie myszką to niestety nie da się zrobić tak, że po wciśnięciu i przytrzymaniu lewego klawisza myszy skrypt wykonywał wirtualne kliknięcia też lewym klawiszem.

Były by to sprzeczne sygnały dla systemu operacyjnego. Trzymając wciśnięty klawisz nie można tym samym klawiszem jednocześnie klikać, bo te dwie rzeczy wzajemnie się wykluczają.

 

Można natomiast zrobić tak, żeby po wciśnięciu innego klawisza myszy (np. prawego) skrypt wirtualnie klikał lewym klawisze tak długo jak ten inny klawisz (np. prawy) jest przytrzymany.

Poniżej działający skrypt testowy:

#include <Misc.au3>

HotKeySet("{ESC}", "koniec")

Do
   If _IsPressed("02") Then MouseClick("")
Until False

;-------------------------------------
Func koniec()
   Exit
EndFunc

Działa to tak, że po wciśnięciu prawego klawisza myszy skrypt wirtualnie klika lewym klawiszem z maksymalną dostępną prędkością.

Po puszczeni prawego klawisza wirtualne klikanie lewym ustaje. Wciśnięcie ESC powoduje zakończenie skryptu.

Opublikowano

@wasta Kurdę wiesz co bo w tym AutoHotKey i w programach exe da się takie coś wykonać :/ Dobra nie ważne sorry że zawróciłem Ci głowę ale przynajmniej jestem bogatszy o kolejną wiedzę :)

Opublikowano

Twój problem mocno mnie zaintrygował. Ponownie zacząłem się zastanawiać, czy nie da się oszukać jakoś system operacyjny, bez grzebania w procedurach obsługi myszy.

Okazało się, że można. Oto co wymyśliłem:

#requireAdmin
#include <Misc.au3>

HotKeySet("{ESC}", "koniec")

Do
   If _IsPressed("01") Then
	  BlockInput(1)
	  MouseUp("")
	  MouseDown("")
	  BlockInput(0)
	  Sleep(25)
   EndIf
Until False



;-------------------------------------
Func koniec()
   Exit
EndFunc

Jak to działa. Ano bardzo prosto.

Po wciśnięciu lewego klawisza myszki _IsPressed("01") zwraca True i skrypt zaczyna wykonywać sekwencję po Then.

Najpierw BlockInput(1) blokuje fizyczną mysz, więc teraz położenie prawdziwych klawiszy myszy jest dla systemu niewidoczne.

Następnie wirtualnie zwalniamy lewy przycisk myszy (MouseUp("")) i ponownie  wirtualnie go wciskamy (MouseDown("")) - wykonujemy więc wirtualny klik.

Teraz BlockInput(0) odblokowuje fizyczną mysz, aby system mógł sprawdzić, czy w dalszym ciągu trzymamy wciśnięty lewy klawisz. Jeżeli tak to cały proces będzie się powtarzał. Jeżeli nie to klikanie ustanie.

Skrypt sprawdzony i działa, chociaż oczywiście nie klika co 1 ms, ale myślę, że dość szybko. Człowiek by tak nie potrafił.

Pozdro.

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...