Delphi で JoyPad を使う 2020/10/09

Delphi (Windows API) で XBOX 360 コントローラを使うサンプルです。
情報元は、「Delphi でゲームコントローラーを扱う (Windows API)」 by DEKO 様です。

※数値が表示されるだけで、実用性はありません。


■ダウンロード : joyPadTest.zip (EXE 本体のみ)

デバイスマネージャーで 「XBOX 360 Controller For Windows」と表示されていれば使用できます。


{
  Delphi 10.3 Professional
  参考 URL :
    Delphi でゲームコントローラーを扱う (Windows API)
    by DEKO 様
    https://qiita.com/ht_deko/items/7b2d0ca7dfd48fbc60ea
}
unit joyPadUnit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Winapi.MMSystem, Vcl.ExtCtrls,
  Vcl.StdCtrls ;

type
  TForm7 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label7: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.FormCreate(Sender: TObject);
begin
  Label1.Caption := 'wXpos    :';
  Label2.Caption := 'wYpos    :';
  Label3.Caption := 'wZpos    :';
  Label4.Caption := 'wButtons :';
  Label5.Caption := 'dwRpos   :';
  Label6.Caption := 'dwUpos   :';
  Label7.Caption := 'dwPOV    :';
  Timer1.Interval := 200;
end;

procedure TForm7.Timer1Timer(Sender: TObject);
// uses ,,, Winapi.MMSystem;
var
  JoyInfoEx: TJoyInfoEx;
begin
  JoyInfoEx.dwSize  := SizeOf(JoyInfoEx);
  JoyInfoEx.dwFlags := JOY_RETURNALL;
  if joyGetPosEx(JOYSTICKID1, @JoyInfoEx) <> JOYERR_NOERROR then
    Exit;

  Edit1.Text := JoyInfoEx.wXpos.ToHexString;
  Edit2.Text := JoyInfoEx.wYpos.ToHexString;
  Edit3.Text := JoyInfoEx.wZpos.ToHexString;
  Edit4.Text := JoyInfoEx.wButtons.ToHexString;
  Edit5.Text := JoyInfoEx.dwRpos.ToHexString;
  Edit6.Text := JoyInfoEx.dwUpos.ToHexString;
  Edit7.Text := JoyInfoEx.dwPOV.ToHexString;

  Edit8.Text := JoyInfoEx.wXpos.ToString;
  Edit9.Text := JoyInfoEx.wYpos.ToString;
  Edit10.Text := JoyInfoEx.wZpos.ToString;
  Edit11.Text := JoyInfoEx.wButtons.ToString;
  Edit12.Text := JoyInfoEx.dwRpos.ToString;
  Edit13.Text := JoyInfoEx.dwUpos.ToString;
  Edit14.Text := JoyInfoEx.dwPOV.ToString;
end;

end.