emulowanie przycisku - windows

0

witam serdecznie,
ostatnio zaczalem grac w pewna gre i tak sobie pomyslalem ze moge napisac program ktory ulatwi zycie;) mianowicie jego coelem ma byc takie dzialanie ze co zadana ilosc czasu bedzie wysylal do aktywnego okna w windowsie (notatnik, kalkulator, moja gra;P) informacje o nacisnieciu zadanego przycisku bez fizycznego naciskania go na klawiaturze oczywiscie...chce to napisac w builderze bo jego w miare znam. odliczanie czasu i interfejs to pestka..tylko jak zrobic to wysylanie 'przycisku' do aktywnego okna?
z gory dziekuje za pomoc i pozdrawiam

0

Do wyszukania:
FindWindow()
SendMessage()

Jest tylko jeden problem. Jeśli gra używa dinput to prawdopodobnie nie obsługuje komunikatów WM_KEYDOWN | WM_KEYUP. W takim wypadku musi Ci pomóc kto inny ;)

0

no ok..poszukalem
pan google pokazal kilka przykladow ale cos mie nie dziala.
na przycisk start mojej aplikacji wrzucilem:
SendMessage(FindWindow("notepad", NULL), WM_KEYDOWN, 'A', 0);

ale nie pisze sie nic w notatniku (otwartym) a juz np zamiana keydown na WM_CLOSE dziala ladnie....i o co chodzi? pomocy

0

w ciemno: WM_KEYDOWN + WM_KEYUP + WM_KEYPRESS.
innymi słowy: symuluj uczciwie tę klawiaturę - pełne eventy puszczaj.

No i szukajka, szukajka... hackowanie myszki i klawiatury to chyba najobszerniejsza część radosnej twórczości tutaj (szczególnie w dział Delphi popatrz, bo tam to już jest prawdziwa moda na to).

0

Kombinujesz Ranides ;)
Chodzi o to, że wysyłasz komunikat do nie tego okna, do którego chcesz.
Żeby coś pokazało się w okienku tekstowym, musisz wysłać WM_CHAR (innych komunikatów nie testowałem) do tego właśnie okienka tekstowego, nie do głównego okna.

0

a no kombinuję w ciemno, bo skoro jemu się nie che szukajki ruszyć, to mi się ma chcieć na MSDN skakać? ;P w WinAPI piszę od święta, a "hackowanie kalkulatora" robiłem tylko raz w Visual Basicu z 5 lat temu :D

0

w sumie to zalatwilem to inaczej. uzylem keybd_event()
teraz do aktualnie aktywnego okienka wysylany jest dany znak. dziala w sumie notatnikiem i kalkulatorem wiec chyba jest ok. jednak dalej nie moge go wykorzystac w mojej grze;( czy ktos wie cos o nProtect? to takie zabezpieczenie uzywane przez niektore gry..pozdrawiam

0

The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message.

To nie ma prawa zadziałać, jeśli gra używa DInput (a praktycznie na 100% używa). Powiedziałem przecież, że gry bardziej skomplikowane od sapera nie obsługują komunikatów WM_KEYUP | WM_KEYDOWN

0

hm hm, do Direct Input takiego gotowca wyniuchałem:
http://www.gamedev.net/community/forums/topic.asp?topic_id=371104

sądząc po opisie, powienieneś być happy...

0

Hmmm.... Nie jestem pewien, czy nProtect to przepuści, ale możesz próbować.

0

ten program co podeslales...chyba pisanie aplikacji pod to nie jest tym o co mi chodzilo..;)
a co sadzicie o podejsciu do tego w taki sposob: przechwytujemy znak wyslany do windowsa i po prostu robimy jakiegos repeat z opoznieniem? jest to w ogole mozliwe zeby wyslac go dokladnie w to samo miejsce zeby system myslal ze to klawiatura? a jesli to mozliwe to jakies pomysly?:>
znalazlem cos takiego: http://xion.org.pl/files/texts/mgt/html/3_3.html

myslicie ze to bedzie to o co mi chodzi?:>

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