Jaki komunikat wysyła joystick?

Odpowiedz Nowy wątek
2011-07-24 16:23
0

Chciałbym żeby program reagował na wciskanie przycisków na joysticku. Jedyne co mi przychodzi do głowy to to że joysticki muszą się jakoś komunikować z komputerem, więc założyłem hooka i odczytywałem numerki. KeyDown, KeyUp, i te inne działają, ale jak wciskam na joysticku to nic się nie dzieje (mam poprawnie zainstalowane sterowniki, na każdej grze działają).

Co powinienem zrobić, żeby jednak dało się odebrać komunikaty od joysticka?


char mander; bool basaur;

Pozostało 580 znaków

2011-07-24 17:43
0

Key -> Klawisz
Joystick ma klawisze?

http://msdn.microsoft.com/en-[...]ry/dd743687%28v=vs.85%29.aspx

Jeśli chcesz używać bardziej zaawansowanych funkcji joysticka / kierownicy jak na przykład skręt w osi Y, lub wibracji to użyj DirectInput na Windowsie


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 2x, ostatnio: unikalna_nazwa, 2011-07-24 17:47
Nic z tego nie załapałem, delphi mówi że nie ma takich komunikatów jak MM_JOY1BUTTONUP... - TomRiddle 2011-07-24 18:32
uses MMSystem; ? - unikalna_nazwa 2011-07-24 18:47

Pozostało 580 znaków

2011-07-24 20:26
0

Dalej nic

function Play(Code: Integer; wParam, lParam: Longint): Longint; stdcall;
begin
case Code of
  HC_ACTION:
    begin
      MB := PEventMsg(lParam)^;
      if MB.Message = MM_JOY1BUTTONDOWN then
        Form1.Caption := 'true'
          else
              Form1.caption := 'false';
    end;
      else
        Result := CallNextHookEx(Hook, Code, wParam, lParam);
 end;
end;

Wciskam przyciski na joysticku i nic się nie dzieje :(


char mander; bool basaur;

Pozostało 580 znaków

2011-07-24 22:13
0

http://msdn.microsoft.com/en-[...]ry/dd757114%28v=vs.85%29.aspx

czy to nie powinno być w dziale "delphi"?
I po co do tego zakładasz hooka? Nie możesz po ludzku odebrać komunikatu?


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 2x, ostatnio: unikalna_nazwa, 2011-07-24 22:26

Pozostało 580 znaków

2011-07-25 11:49
0

Nadal nic się nie dzieje

type
  TForm1 = class(TForm)
  private
    procedure WmLButtonDown(var Msg : TMessage); message MM_JOY1BUTTONDOWN;
  end;
procedure TForm1.WmLButtonDown(var Msg: TMessage);
begin
Caption := 'true';
end;

char mander; bool basaur;
edytowany 1x, ostatnio: TomRiddle, 2011-07-25 11:49

Pozostało 580 znaków

2011-07-25 12:12
0

ale włączyłeś to wysyłanie komunikatów dżojstika do tego okna (joySetCapture) i zwróciło JOYERR_NOERROR (0)?


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 2x, ostatnio: unikalna_nazwa, 2011-07-25 12:19
Tak, zwróciło JOYERR_NOERROR. - TomRiddle 2011-07-25 12:18

Pozostało 580 znaków

2011-07-25 12:19
0

Robię tak:

if joySetCapture(Application.Handle, 1, 100, True) = JOYERR_NOERROR then
  Caption := 'No Error';

dobrze?


char mander; bool basaur;
Pokaż pozostałe 4 komentarze
sorry, nie pamiętam już delphi - miało być Form1.Handle (/Handle) - unikalna_nazwa 2011-07-25 15:16
To może lepiej będzie jak dasz cały kod, bo mi nie wychodzi. - TomRiddle 2011-07-25 15:23
ciężko będzie bo delphi nie widziałem od kilku lat, a joystick musiałbym wygrzebać z dna szafy - unikalna_nazwa 2011-07-25 15:25
No to lipa. Bo próbowałem wszystkiego co mówiłeś. Teraz jedyną nadzieją jest olesio i jego długie posty. - TomRiddle 2011-07-25 15:26
sprawdź jeszcze czy możesz za pomocą joyGetPos odczytać chociaż pozycję - unikalna_nazwa 2011-07-25 15:42

Pozostało 580 znaków

2011-07-25 16:09
0
var P: PJoyInfo;
begin
   joyGetPos(0, P);
   Caption := IntToStr(P.wXpos);
end;

Dziwnę, bo gdy wywołam tę procedurę to zwraca jakiś numer. Jeżeli kliknę Strzałki i znowu wywołam, to nic się nie stanie.
Ale jak resetuję program, to są inne. o.O


char mander; bool basaur;
edytowany 2x, ostatnio: TomRiddle, 2011-07-25 16:12
a "P" nie sugeruje wskaźnika? znaczy gdzieś tam chyba brakuje <sup> czy czego tam się używało w delphi przy wskaźnikach - zobacz P</sup>.wXpos, poza tym spróbuj "1" zamiast "0" skoro w tamtej funkcji dla zera wyskakuje błąd. kombinuj :P - unikalna_nazwa 2011-07-25 17:45

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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