Program do nagrania i zapętlenia klawiszy na klawiaturze

2012-10-13 16:53
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źć. :(

edytowany 2x, ostatnio: olesio, 2012-10-13 17:44
Czy raczyłeś skorzystać z Google i wyszukiwarki w serwisie? - deus 2012-10-13 16:56

Pozostało 580 znaków

2012-10-13 17:46
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.


edytowany 1x, ostatnio: olesio, 2012-10-13 17:47

Pozostało 580 znaków

2012-10-13 17:53
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?

Pozostało 580 znaków

2012-10-13 18:27

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.


edytowany 1x, ostatnio: olesio, 2012-10-13 18:28

Pozostało 580 znaków

2012-10-13 20:36
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}

edytowany 2x, ostatnio: Gawron1, 2012-10-13 20:36

Pozostało 580 znaków

2012-10-13 20:39
0

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


Pozostało 580 znaków

2012-10-13 20:54
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ł?

edytowany 1x, ostatnio: Gawron1, 2012-10-13 21:06

Pozostało 580 znaków

2012-10-13 21:49
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".


edytowany 7x, ostatnio: olesio, 2012-10-13 22:41

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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