Skrypt AHK do wysyłania skrótów klawiszowych do określonego okna

1

Potrzebuję skryptu ahk, który wysyła 3 różne klawisze skrótu (naciśnięcie klawisza f1, wysłanie f5 na przykład do aktywnego okna konkretnej aplikacji (pokera)) f1 musi być f1 dla innych aplikacji działających równolegle

kto może pomóc ?

Jin
źródło

Odpowiedzi:

2

Jeśli tytuł Twojej aplikacji pokerowej zawsze kończy się na - NLH, ale nie chcesz dopasowywać okien, których klasa jest PokerStarsTableFrameClass, użyj następujących poleceń:

F1::
WinGetTitle, Title, A
WinGetClass, Class, A
if (RegExMatch(Title, "- NLH$") AND (Class != "PokerStarsTableFrameClass"))
    SendPlay {F5}
else
    SendPlay {F1}
return

Jak to działa

  • WinGet(Title|Class), (Title|Class), Aodczytuje Atytuł okna | klasy active ( ) i zapisuje go w zmiennej Title|Class.

  • - NLH$jest wyrażeniem regularnym pasującym do wszystkich ciągów zakończonych znakiem - NLH. ( $jest końcem ciągu)

  • if (RegExMatch(Title, "- NLH$") AND (Class != "PokerStarsTableFrameClass"))Testy jeśli wyrażenie regularne pasuje Title, aleClass różni się od wyjątku.

    • Jeśli tak, SendPlay {F5}wysyła F5do aktywnego okna.

    • W przeciwnym razie SendPlay {F1}wysyła normalny F1do aktywnego okna.

Dennis
źródło
dzięki dużo działa dla aplikacji, ale wyłącza klawisze skrótu w innej aplikacji, mimo że w tytule okna nie ma nazwy „NLH”, której użyłem zamiast „pokera”, nie można użyć klasy okna, ponieważ inna aplikacja ma tę samą klasę, ale czy można wykluczyć ahk_class („PokerStarsTableFrameClass”)?
Jin
Zaktualizowałem swoją odpowiedź.
Dennis
dzięki ponownie znalazłem również pomoc na czacie społecznościowym autohotkey. działa to do tej pory bardzo dobrze: codeSetTitleMatchMode 2 #IfWinActive NLH F1 :: SendPlay {F5} F2 :: SendPlay {F6} F3 :: SendPlay {F7} #IfWinActive return
Jin
-1

Nie potrzebujesz skryptu AutoHotkey. Musisz nauczyć się korzystać z dostępnych interfejsów API (poleceń), aby osiągnąć to, co chcesz. Aby wysłać dane wejściowe bezpośrednio do okna lub jego kontrolek, aktywnych lub nie, możesz użyć polecenia ControlSend .

iglvzx
źródło