logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Program emulujący wciskanie klawiszy na klawiaturze?

voker 29 Mar 2005 12:10 4825 6
REKLAMA
  • #1 1357840
    voker
    Poziom 2  
    Posty: 2
    Witam, czy istnieje może program który np. po wciśnięciu na klawiaturze jakiegoś klawisza, emulował wciśniecie kolejno kilku klawiszy na klawiaturze? Czy da się coś takiego napisać ?
  • REKLAMA
  • #2 1357960
    ZeeWolf
    Poziom 28  
    Posty: 989
    Pomógł: 115
    Ocena: 58
    Witam.
    Wszystko zalezy, co chcesz w ten sposob osiagnac, oraz pod co i w czym piszesz. Jezeli pod Winde, owszem, jest mozliwosc przechwycenia komunikatu okna i odpowiedniego zmodyfikowania go (badz wyslania serii komunikatow za pomoca PostMessage. Napisz troszke dokladniej, to i ja odpowiem Ci dokladniej. Pozdrawiam.
  • REKLAMA
  • #3 1360160
    voker
    Poziom 2  
    Posty: 2
    chodzi mi o program pod windows, program miał by odczytywać wciśnięty klawisz na klawiaturze, po czym emulować przypisane do tego klawisza ciągi znaków na klawiaturze, np: 1d2d3d4d5d6d7d8d9d0. może taki program już istnieje :] potrzebne mi takie coś do ułatwienia gry :]
  • REKLAMA
  • #4 1363654
    ZeeWolf
    Poziom 28  
    Posty: 989
    Pomógł: 115
    Ocena: 58
    Oj, to moze byc problem. Tzn. problem pojawi sie, jezeli chcesz, zeby program dzialal w czasie dzialania gry. Wiekszosc gier korazysta z DirectInput (ale nie wszystkie) w trybie wylacznosci, wiec okno nie dostaje komunikatow WinAPI - musialbys jakos "podpiac sie" pod juz dzialajacy obiekt COM DirectInput. Jezeli natomiast program ma chodzic w czystych Windowsach, to:

    sprawdzasz w handlerze od klawiszy, czy zostal wcisniety odpowiedni klawisz, jezeli tak, to wysylasz do okna serie komunikatow WM_KEYDOWN z kodami odpowiednich klawiszy (raczej uzywaj PostMessage). Nie jestem pewien, czy WM_KEYDOWN da odpowiedni rezultat (dziala na zasadzie scanow), byc moze trzeba bedze uzyc innego komunikatu (nie pamietam). Albo mozesz sie pobawic z hookowaniem komunikatow. Pozdrawiam.
  • #5 1453913
    Jaro15l_90r
    Poziom 13  
    Posty: 84
    Pomógł: 4
    Witam
    Umiem zrobić tak, że po naciśnięciu np. entera np. zamknie się program.
    Należy skorzystać z akcji KeyDown:
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    If key = vk_return Then
    Application.Terminate;
    end;

    Ale, żeby zasymulować naciśnięcie jakiegoś klawisza to nie wiem.
  • REKLAMA
  • #6 1454230
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Najprościej w C i WinAPI :
    htestWnd=GetFocus(VOID)
    SendMessage(htestWnd, WM_KEYDOWN, KeyCode, ...)
    SendMessage(htestWnd, WM_KEYUP, KeyCode, ...)

    Szczegóły w Win32.hlp, do zdobycia poprzez www.google.pl
  • #7 1480114
    bisti
    Poziom 13  
    Posty: 124
    Ocena: 1
    Witaj
    program taki juz istnieje ;-)
    nazywa sie girder, uzywam go do sterowania komputerem za pomoca pilota, jednak mozliwe jest dzieki niemu rowniez przypisanie jakiegos ciagu znakow jednemu klawiszowi na klawiaturze.
    pozdraiwam

Podsumowanie tematu

✨ Dyskusja dotyczy istnienia programu na system Windows, który po naciśnięciu jednego klawisza na klawiaturze emuluje sekwencję innych klawiszy, co może ułatwić np. rozgrywkę w grach. Rozwiązanie wymaga przechwycenia komunikatów klawiatury i wysłania serii komunikatów WM_KEYDOWN/WM_KEYUP do odpowiedniego okna aplikacji za pomocą funkcji WinAPI, takich jak PostMessage lub SendMessage. W przypadku gier korzystających z DirectInput w trybie wyłączności, standardowe metody WinAPI mogą nie działać, co wymaga bardziej zaawansowanego podejścia, np. hookowania komunikatów lub integracji z obiektami COM DirectInput. Przykładowy kod w Delphi pokazuje obsługę zdarzenia KeyDown, a w C z WinAPI użycie SendMessage do symulacji naciśnięć klawiszy. Istnieje także gotowy program o nazwie Girder, który pozwala przypisać ciągi znaków do pojedynczych klawiszy, wykorzystywany m.in. do sterowania komputerem pilotem.
Wygenerowane przez model językowy.
REKLAMA