Program do nagrania i zapętlenia klawiszy na klawiaturze

0

Cześć.
Istnieje pewna gra, w której należy ćwiczyć na siłowni za pomocą sztangi. Działa to tak, że aby podnieść ją w górę, należy kliknąć strzałkę w górę lub W i aby ją opuścić, wcisnąć S lub strzałkę w dół. Zależy mi na programie, który mógłby to zautomatyzować. Próbowałem programu AutoHotkey, ale tworzenie skryptu jest dla mnie zbyt skomplikowane. Jeśli znacie jakieś narzędzie, które umożliwiłoby automatyczne wciskanie strzałki w górę i dół bądź gotowy skrypt do danego programu, bardzo proszę o wypowiedzenie się.
Pozdrawiam.

@Edit: Tak, korzystałem z google i z wyszukiwarki na forum - nic konkretnego nie udało mi się znaleźć. :(

0

Przecież AutoHotKey ma narzędzie AutoScriptWriter, które pozwala nagrywac ruchy myszką, wciskanie klawiszy oraz inne zdarzenia i tworzy gotowy skrypt ahk, który wystarczy później tylko nieco obrobić aby usunąc zbędne polecenia. A więcej mozna znaleźć w dokumentacji programu i na oficjalnym forum projektu. To już kolejna osoba, która pobiera pewnie zipa z programem ze strony projektu i nie spojrzy nawet co jest zawarte w archiwum i do czego służy. Szczyt lenistwa ;/ A i tagi na forum nie służa do tego aby podawać w nich swój nick.

0

Przed napisaniem posta próbowałem zrobić coś w AutoScriptWriter, ale naprawdę nie potrafię sobie z tym poradzić. Istnieje jakiś inny, prostszy w obsłudze program, w którym uzyskałbym ten sam efekt?

0

Jeżeli program, który nagra wszystko za Ciebie i wymaga tylko usunięcia powtórek lub zbędnych, przechwyconych zdarzeń jest dla Ciebie za trudny to cięzko mi coś innego doradzić. Nie istnieją raczej programy działające tak, że mówisz po polsku do mikrofonu, co program miałby robić i generuje się idealnie działający exek. Tak to nie działa. Nie chce Ci się kombinować samodzielnie, to zleć komuś napisanie takiego programu w dziale Oferty Pracy za rozsądną stawkę. Ponieważ wątpie czy ktoś doradzi Tobie tutaj coś konkretnego, skoro narzędzie skryptowe jak AutoHotKey, powstałe raczej dla osób które nie znają żadnego języka programowania i ma zautomatuzować proces tworzenia prostych aplikacji, jest dla Ciebie za tudny, to co będzie łatwe - sam nie wiem.

0
olesio napisał(a):

Jeżeli program, który nagra wszystko za Ciebie i wymaga tylko usunięcia powtórek lub zbędnych, przechwyconych zdarzeń jest dla Ciebie za trudny to cięzko mi coś innego doradzić. Nie istnieją raczej programy działające tak, że mówisz po polsku do mikrofonu, co program miałby robić i generuje się idealnie działający exek. Tak to nie działa. Nie chce Ci się kombinować samodzielnie, to zleć komuś napisanie takiego programu w dziale Oferty Pracy za rozsądną stawkę. Ponieważ wątpie czy ktoś doradzi Tobie tutaj coś konkretnego, skoro narzędzie skryptowe jak AutoHotKey, powstałe raczej dla osób które nie znają żadnego języka programowania i ma zautomatuzować proces tworzenia prostych aplikacji, jest dla Ciebie za tudny, to co będzie łatwe - sam nie wiem.

W ten sposób ma wyglądać skrypt?

WinWait, Program Manager,
IfWinNotActive, Program Manager, , WinActivate, Program Manager,
WinWaitActive, Program Manager,
Send, {UP}{DOWN}

0

Nie wiem, to Ty musisz wiedzieć co chcesz osiągnąć, ale wątpie żeby okno gry miało tytuł Program Manager.

0
olesio napisał(a):

Nie wiem, to Ty musisz wiedzieć co chcesz osiągnąć, ale wątpie żeby okno gry miało tytuł Program Manager.
Chciałbym, aby po włączeniu skryptu, ciągle klikała się strzałka w dół i do góry - najlepiej po kolei. Najlepiej bez konca i aby była możliwość wyłączenia loopa skrótem klawiszowym.
Troszeczkę pokombinowałem i obecnie wygląda to tak:

Run, D:\GTA San Andreas\gta_sa.exe
WinWait, GTA: San Andreas,
IfWinNotActive, GTA: San Andreas, , WinActivate, GTA: San Andreas,
WinWaitActive, GTA: San Andreas,
Send, {UP}{DOWN}

Co i w którym miejscu powinienem dodać, aby uzyskać loop i aby ten skrypt działał?

0

RTFM! Przecież AutoHotKey ma dołaczony *.chm z opisem poleceń. Dawno już byś sam pokombinował i poczytał to byś zrobił co trzeba, a nie z każdym pytaniem lecisz na forum. Nie do tego ono służy. Poza tym jak widzisz AutoHotKey ma przecież własne forum supportu. I nie umiem skutecznie przeanalizować źródła AutoHotKeya, bo słabo znam C++ aby stwierdzić z jakich funkcji API korzysta przy wykonywaniu swojego send, ale często jest tak, że gry DirectX'owe nie reagują w ogóle na symulacje wciskania oraz zwalniania klawiszy funkcjami Keybd_Event lub nawet SendInput. I tyle. Według mnie wtedy niewiele z tym zrobisz. Można było by jeszcze spróbować zainjectować dllkę w proces gry i spróbowac odczytać jakie komunikaty odbiera okno gry przy naciskaniu klawiszy i spróbować późneij wysłać takie same. Ale tego już pod AutoHotKeyem nie zrobisz, bo trzeba by napisać w czym dllkę oraz jakiś jej injector. A z Twoim podejściem w stylu "pytaj o wszystko, sam nie rób nic" słabo to widzę niestety. Poza tym injekcja w działający proces może się po prostu nie udać albo gra może się wywalić, bo wykryje taką technikę albo po prostu nie wysyła takich komunikatów, itp.

EDIT: sprawdziłem dla GTA IV, bo tylko taką mam na dysku i tam SendInput wysyłany z naciskanym i "puszczanym" Enterem działa, czyli podejrzewam że i w "San Andreas" też zadziałają i to inne klawisze. No to teraz jeżeli nie powiedzie się Tobie z AutoHotKeyem, to pozostaje Tobie sobie ściągnąc jakiś kompilator i napisać program, który w wątku / timerze będzie robił to co chcesz. Od siebie mogę polecić z łatwych języków na start oczywiście obiektowy Pascal. Dlatego albo skorzystasz z krążącej po sieci wersji Delphi 7 Personal albo z Lazarusa albo możesz też pisać na szybko konsolową aplikację w FPC lub oczywiście w WinAPI jak je zgłębisz. Wszystkie wymienione środowiska są darmowe. A Lazarus również do zastosowań komercyjnych. Posiadają dokumentację. A i na sieci jest też mnóśtwo kursów i tutoriali dotyczących tego języka. A na MSDNie jak i w ogóle w googlach powinieneś znaleźć bez problemów przykłady użycia funkcji SendInput. Trzeba tylko usiąść, poszukać i pokombinowac SAMODZIELNIE, a program na pewno stworzysz bez problemów. Powodzenia.

EDIT 2: żeby nie wprowadzać w błąd i sprecyzować, cytuje za MSDN'em i opisem funkcji keybd_event:

Note This function has been superseded. Use SendInput instead.

I teraz wszystko powinno być "jaśniejsze".

1 użytkowników online, w tym zalogowanych: 0, gości: 1