Jaki komunikat wysyła joystick?

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?

0

Key -> Klawisz
Joystick ma klawisze?

http://msdn.microsoft.com/en-us/library/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

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 :(

0

http://msdn.microsoft.com/en-us/library/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?

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;
0

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

0

Robię tak:

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

dobrze?

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

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