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

Rekomendowane odpowiedzi

Opublikowano

Witam. Napiszę tutaj parę słów i sztuczkek, o funkcji HotKeySet

 

Tej funkcji używa pewnie większość programistów w AutoIT. A dzisiaj podczas przeglądania helpa (sam miałem z tą funkcją problem) natknąłem się na kilka ciekawostek, warte upublicznienia (why? 4/5 ludzi stąd nie zagląda pewnie do helpa (oryginalnego)).

 

Na początek aczkolwiek: Składnia

HotKeySet ("klawisz" [, "procedura"])

"klawisz" - Klawisz który zostanie przypisany. Składnia taka sama jak w Send.

"procedura" - Funkcja która zostanie przypisana do klawisza. O tym dlaczego jest to parametr opcjonalny - niżej.

 

APO: HotKeySet praktycznie ZAWSZE zwraca 1 (True). Jedyny przypadek gdzie zwraca błąd, to używanie ruskiej klawiatury i małych liter (?), a przynajmniej tyle zrozumiałem z Helpa (potrzebny porządny tłumacz :D).

 

Dezaktywacja HotKeya podczas działania programu

Tak, jest to do zrobienia. Wystarczy tylko podać klawisz do funkcji HotKeySet, bez podawania procedury. Oczywiście klawisz musi być wcześniej przypisany do danej procedury (procedura = funkcja która nic nie zwraca) przez tą funkcję.

 

Przykładzik:

 

HotKeySet ("q", "Test")
HotKeySet ("a", "dezaktywuj")

Func Test()
   MsgBox (0, "", "Ten klawisz jest przypisany!")
EndFunc

Func Dezaktywuj()
   HotKeySet("q")
   HotKeySet("a")
   MsgBox (0, "", "Dezaktywowałem hotkeye! Możesz wyłączyć program poprzez ikonkę w trayu")
EndFunc

While 1
   Sleep(100)
WEnd

 

 

Masowe przypisywanie klawiszy

To pewnie jest oczywiste, aczkolwiek to pokażę. Do tego wystarczy zwykła pętla.

 

Przykład:

 

Local $przyciski[5] = ["a", "s", "d", "f", "g"]
$i = 0

While $i < UBound($przyciski)
   HotKeySet ($przyciski[$i], "test")
   $i += 1
WEnd

Func test()
   MsgBox (0, "", "Ten klawisz jest przypisany :>")
EndFunc

While 1
   Sleep (100)
WEnd

 

 

W ten sam sposób można masowo dezaktywować hotkeye.

 

HotKey blokuje klawisz? Nie problem!

Jest pewien trick (opisany w helpie, a jakże) który pozwoli nam nieco oszukać naszego hotkeya

Wystarczy w procedurze do niego przypisanej dezaktywować go, wstawić senda z klawiszem przypisanym do niego i znowu go aktywować :D

 

Przykład:

 

HotKeySet ("q", "Test")

$i = 1

Func Test()
   HotKeySet("q")
   Send("q")
   HotKeySet("q", "Test")
   ToolTip ("Kliknąłes "&$i&" razy", 0, 0)
   $i += 1
EndFunc

While 1
   Sleep (100)
WEnd

 

 

Przy okazji pokazałem sztuczkę z liczeniem ilości kliknięć :)

 

I na koniec: Sprawdzenie jaki klawisz został kliknięty

I jest to bardzo proste. Wystarczy makro @HotKeyPressed. Posłużę się zmodyfikowanym przykładem masowego przypisywania klawiszy.

 

Przykład:

 

Local $przyciski[26] = ["q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m"]
$i = 0

While $i < UBound($przyciski)
   HotKeySet ($przyciski[$i], "test")
   $i += 1
WEnd

Func test()
   MsgBox (0, "", "Nacisnales klawisz "&@HotKeyPressed)
EndFunc

While 1
   Sleep (100)
WEnd

 

btw; pokazałem też tutaj, że lepiej używać UBound zamiast klepać ilość indeksów w tablicy na chama. Nie trzeba grzebać w kodzie, tylko zmieniasz sobie tablicę, i masz resztę kodu gdzieś. Tutaj może to się wydaje nieprzydatne, ale w większych programach jest to wielce pomocne.

 

Cóż, to by było na tyle. Jeśli znajdziecie jeszcze jakiś kruczek, piszcie.

Tutek napisany na szybko, co do tutka o stringach i operowaniu na adresach - postaram się szybko skończyć, ale mam szkołę :/

 

[bitch please] Można zdjąć 5% xD?

846331404756772371599.jpeg
Opublikowano

"Tutaj niepotrzebne"? oO

Wersja z 27 HotKey'ami linijka po linijce jest doprawy równie przejrzysta...

 

Poza tym przydałoby się dodać

a) składnię + podstawowy opis

B) oczojebną informację, iż HotKeySet zawsze zwraca 1 ( chyba, ze masz zepsóty kompóter ), bo już kilkanaście łebków próbowało uzależnić aktywnośc hotkeya od zmiennej do której przypisali return value

Ta sygnatura jest pusta.

  • 1 miesiąc temu...
Opublikowano

Nawet przydatne. Wykorzystam te funkcje w moim bocie do Battlefield Heroes. Będę robił go prawdopodobnie w wakacje

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

  • 2 tygodnie później...

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...