📄 directinput8.pas
字号:
****************************************************************************)
GUID_ConstantForce : TGUID = '{13541C20-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_RampForce : TGUID = '{13541C21-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_Square : TGUID = '{13541C22-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_Sine : TGUID = '{13541C23-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_Triangle : TGUID = '{13541C24-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_SawtoothUp : TGUID = '{13541C25-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_SawtoothDown : TGUID = '{13541C26-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_Spring : TGUID = '{13541C27-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_Damper : TGUID = '{13541C28-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_Inertia : TGUID = '{13541C29-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_Friction : TGUID = '{13541C2A-8E33-11D0-9AD0-00A0C9A06E35}';
GUID_CustomForce : TGUID = '{13541C2B-8E33-11D0-9AD0-00A0C9A06E35}';
//
// Interfaces
//
type
IDirectInputEffect = interface (IUnknown)
['{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}']
(** IDirectInputEffect methods ***)
function Initialize(hinst : THandle; const dwVersion : LongWord; const rguid : TGUID) : HResult; stdcall;
function GetEffectGuid(out pguid : TGUID) : HResult; stdcall;
function GetParameters(var peff : TDIEffect; const dwFlags : LongWord) : HResult; stdcall;
function SetParameters(var peff : TDIEffect; const dwFlags : LongWord) : HResult; stdcall;
function Start(const dwIterations : LongWord; const dwFlags : LongWord) : HResult; stdcall;
function Stop : HResult; stdcall;
function GetEffectStatus(out pdwFlags : LongWord) : HResult; stdcall;
function Download : HResult; stdcall;
function Unload : HResult; stdcall;
function Escape(var pesc : PDIEffEscape) : HResult; stdcall;
end;
TDIEnumDeviceObjectsCallbackA = function(var lpddoi : TDIDeviceObjectInstanceA; pvRef : Pointer) : Integer; stdcall;
TDIEnumDeviceObjectsCallbackW = function(var lpddoi : TDIDeviceObjectInstanceW; pvRef : Pointer) : Integer; stdcall;
TDIEnumDeviceObjectsCallback = function(var lpddoi : TDIDeviceObjectInstance; pvRef : Pointer) : Integer; stdcall;
TDIEnumDeviceObjectsProc = TDIEnumDeviceObjectsCallback;
TDIEnumEffectsCallbackA = function(var pdei : TDIEffectInfoA; pvRef : Pointer) : Integer; stdcall;
TDIEnumEffectsCallbackW = function(var pdei : TDIEffectInfoW; pvRef : Pointer) : Integer; stdcall;
TDIEnumEffectsCallback = function(var pdei : TDIEffectInfo; pvRef : Pointer) : Integer; stdcall;
TDIEnumEffectsProc = TDIEnumEffectsCallback;
TDIEnumCreatedEffectObjectsCallback = function(peff : IDirectInputEffect; pvRev : Pointer) : Integer; stdcall;
TDIEnumCreatedEffectObjectsProc = TDIEnumCreatedEffectObjectsCallback;
TDIEnumEffectsInFileCallback = function(var lpDiFileEf : TDIFileEffect; pvRef : Pointer) : Integer; stdcall;
IDirectInputDevice8A = interface (IUnknown)
['{54D41080-DC15-4833-A41B-748F73A38179}']
(*** IDirectInputDevice8A methods ***)
function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackA; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function GetProperty(const rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
function SetProperty(const rguidProp : PGUID; const pdiph : TDIPropHeader) : HResult; stdcall;
function Acquire : HResult; stdcall;
function Unacquire : HResult; stdcall;
function GetDeviceState(const cbData : LongWord; lpvData : Pointer) : HResult; stdcall;
function GetDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const dwFlags : LongWord) : HResult; stdcall;
function SetDataFormat(lpdf : PDIDataFormat) : HResult; stdcall;
function SetEventNotification(const hEvent : THandle) : HResult; stdcall;
function SetCooperativeLevel(const hwnd : HWND; const dwFlags : LongWord) : HResult; stdcall;
function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceA; const dwObj, dwHow : LongWord) : HResult; stdcall;
function GetDeviceInfo(var pdidi : TDIDeviceInstanceA) : HResult; stdcall;
function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
function Initialize(const hinst : THandle; const dwVersion : LongWord; const rguid : TGUID) : HResult; stdcall;
function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; out ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult; stdcall;
function EnumEffects(lpCallback: TDIEnumEffectsCallbackA; pvRef : Pointer; const dwEffType : LongWord) : HResult; stdcall;
function GetEffectInfo(var pdei : TDIEffectInfoA; const rguid : TGUID) : HResult; stdcall;
function GetForceFeedbackState(var pdwOut : LongWord) : HResult; stdcall;
function SendForceFeedbackCommand(const dwFlags : LongWord) : HResult; stdcall;
function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : Pointer; const fl : LongWord) : HResult; stdcall;
function Escape(var pesc : TDIEffEscape) : HResult; stdcall;
function Poll : HResult; stdcall;
function SendDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const fl : LongWord) : HResult; stdcall;
function EnumEffectsInFile(const lpszFileName : PChar; pec : TDIEnumEffectsInFileCallback; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function WriteEffectToFile(const lpszFileName : PChar; const dwEntries : LongWord; rgDIFileEft : PDIFileEffect; const dwFlags : LongWord) : HResult; stdcall;
function BuildActionMap(var lpdiaf : TDIActionFormatA; const lpszUserName : PAnsiChar; const dwFlags : LongWord) : HResult; stdcall;
function SetActionMap(var lpdiActionFormat : TDIActionFormatA; const lptszUserName : PAnsiChar; const dwFlags : LongWord) : HResult; stdcall;
function GetImageInfo(var lpdiDevImageInfoHeader : TDIDeviceImageInfoHeaderA) : HResult; stdcall;
end;
IDirectInputDevice8W = interface (IUnknown)
['{54D41081-DC15-4833-A41B-748F73A38179}']
(*** IDirectInputDevice8A methods ***)
function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackW; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function GetProperty(const rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
function SetProperty(const rguidProp : PGUID; const pdiph : TDIPropHeader) : HResult; stdcall;
function Acquire : HResult; stdcall;
function Unacquire : HResult; stdcall;
function GetDeviceState(const cbData : LongWord; lpvData : Pointer) : HResult; stdcall;
function GetDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const dwFlags : LongWord) : HResult; stdcall;
function SetDataFormat(lpdf : PDIDataFormat) : HResult; stdcall;
function SetEventNotification(const hEvent : THandle) : HResult; stdcall;
function SetCooperativeLevel(const hwnd : HWND; const dwFlags : LongWord) : HResult; stdcall;
function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceW; const dwObj, dwHow : LongWord) : HResult; stdcall;
function GetDeviceInfo(var pdidi : TDIDeviceInstanceW) : HResult; stdcall;
function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
function Initialize(const hinst : THandle; const dwVersion : LongWord; const rguid : TGUID) : HResult; stdcall;
function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; out ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult; stdcall;
function EnumEffects(lpCallback : TDIEnumEffectsCallbackW; pvRef : Pointer; const dwEffType : LongWord) : HResult; stdcall;
function GetEffectInfo(var pdei : TDIEffectInfoW; const rguid : TGUID) : HResult; stdcall;
function GetForceFeedbackState(var pdwOut : LongWord) : HResult; stdcall;
function SendForceFeedbackCommand(const dwFlags : LongWord) : HResult; stdcall;
function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : Pointer; const fl : LongWord) : HResult; stdcall;
function Escape(var pesc : TDIEffEscape) : HResult; stdcall;
function Poll : HResult; stdcall;
function SendDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const fl : LongWord) : HResult; stdcall;
function EnumEffectsInFile(const lpszFileName : PWideChar; pec : TDIEnumEffectsInFileCallback; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function WriteEffectToFile(const lpszFileName : PWideChar; const dwEntries : LongWord; rgDIFileEft : PDIFileEffect; const dwFlags : LongWord) : HResult; stdcall;
function BuildActionMap(var lpdiaf : TDIActionFormatW; const lpszUserName : PWideChar; const dwFlags : LongWord) : HResult; stdcall;
function SetActionMap(var lpdiActionFormat : TDIActionFormatW; const lptszUserName : PWideChar; const dwFlags : LongWord) : HResult; stdcall;
function GetImageInfo(var lpdiDevImageInfoHeader : TDIDeviceImageInfoHeaderW) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInputDevice8 = IDirectInputDevice8W;
{$ELSE}
IDirectInputDevice8 = IDirectInputDevice8A;
{$ENDIF}
TDIEnumDevicesCallbackA = function (var lpddi : TDIDeviceInstanceA; pvRef : Pointer) : Integer; stdcall;
TDIEnumDevicesCallbackW = function (var lpddi : TDIDeviceInstanceW; pvRef : Pointer) : Integer; stdcall;
TDIEnumDevicesCallback = function (var lpddi : TDIDeviceInstance; pvRef : Pointer) : Integer; stdcall;
TDIEnumDevicesProc = TDIEnumDevicesCallback;
TDIConfigureDevicesCallback = function(lpDDSTarget : IUnknown; pvRef : Pointer) : Integer; stdcall;
TDIConfigureDevicesProc = TDIConfigureDevicesCallback;
TDIEnumDevicesBySemanticsCallbackA = function(var lpddi : TDIDeviceInstanceA; out lpdid : IDirectInputDevice8A; const dwFlags, dwRemaining : LongWord; pvRef : Pointer) : Integer; stdcall;
TDIEnumDevicesBySemanticsCallbackW = function(var lpddi : TDIDeviceInstanceW; out lpdid : IDirectInputDevice8W; const dwFlags, dwRemaining : LongWord; pvRef : Pointer) : Integer; stdcall;
{$IFDEF UNICODE}
TDIEnumDevicesBySemanticsCallback = TDIEnumDevicesBySemanticsCallbackW;
{$ELSE}
TDIEnumDevicesBySemanticsCallback = TDIEnumDevicesBySemanticsCallbackA;
{$ENDIF}
TDIEnumDevicesBySemanticsProc = TDIEnumDevicesBySemanticsCallback;
IDirectInput8A = interface (IUnknown)
['{BF798030-483A-4DA2-AA99-5D64ED369700}']
{*** IDirectInput8A methods ***}
function CreateDevice(const rguid : TGUID; out lplpDirectInputDevice : IDirectInputDevice8A; pUnkOuter : IUnknown) : HResult; stdcall;
function EnumDevices(const dwDevType : LongWord; lpCallback : TDIEnumDevicesCallbackA; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
function Initialize(const hinst : THandle; const dwVersion : LongWord) : HResult; stdcall;
function FindDevice(const rguidClass : TGUID; ptszName : PAnsiChar; out pguidInstance : TGUID): HResult; stdcall;
function EnumDevicesBySemantics(ptszUserName : PAnsiChar; const lpdiActionFormat : TDIActionFormatA; lpCallback : TDIEnumDevicesBySemanticsCallbackA; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function ConfigureDevices(lpdiCallback : TDIConfigureDevicesCallback; const lpdiCDParams : TDIConfigureDevicesParamsA; const dwFlags : LongWord; pvRefData : Pointer) : HResult; stdcall;
end;
IDirectInput8W = interface (IUnknown)
['{BF798031-483A-4DA2-AA99-5D64ED369700}']
{*** IDirectInput8W methods ***}
function CreateDevice(const rguid : TGUID; out lplpDirectInputDevice : IDirectInputDevice8W; pUnkOuter : IUnknown) : HResult; stdcall;
function EnumDevices(const dwDevType : LongWord; lpCallback : TDIEnumDevicesCallbackW; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
function Initialize(const hinst : THandle; const dwVersion : LongWord) : HResult; stdcall;
function FindDevice(const rguidClass : TGUID; ptszName : PWideChar; out pguidInstance : TGUID): HResult; stdcall;
function EnumDevicesBySemantics(ptszUserName : PWideChar; const lpdiActionFormat : TDIActionFormatW; lpCallback : TDIEnumDevicesBySemanticsCallbackW; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
function ConfigureDevices(lpdiCallback : TDIConfigureDevicesCallback; const lpdiCDParams : TDIConfigureDevicesParamsW; const dwFlags : LongWord; pvRefData : Pointer) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInput8 = IDirectInput8W;
{$ELSE}
IDirectInput8 = IDirectInput8A;
{$ENDIF}
type
IID_IDirectInput8W = IDirectInput8W;
IID_IDirectInput8A = IDirectInput8A;
IID_IDirectInput8 = IDirectInput8;
IID_IDirectInputDevice8W = IDirectInputDevice8W;
IID_IDirectInputDevice8A = IDirectInputDevice8A;
IID_IDirectInputDevice8 = IDirectInputDevice8;
IID_IDirectInputEffect = IDirectInputEffect;
const
DIEFT_ALL = $00000000;
DIEFT_CONSTANTFORCE = $00000001;
DIEFT_RAMPFORCE = $00000002;
DIEFT_PERIODIC = $00000003;
DIEFT_CONDITION = $00000004;
DIEFT_CUSTOMFORCE = $00000005;
DIEFT_HARDWARE = $000000FF;
DIEFT_FFATTACK = $00000200;
DIEFT_FFFADE = $00000400;
DIEFT_SATURATION = $00000800;
DIEFT_POSNEGCOEFFICIENTS = $00001000;
DIEFT_POSNEGSATURATION = $00002000;
DIEFT_DEADBAND = $00004000;
DIEFT_STARTDELAY = $00008000;
DI_DEGREES = 100;
DI_FFNOMINALMAX = 10000;
DI_SECONDS = 1000000;
DIEFF_OBJECTIDS = $00000001;
DIEFF_OBJECTOFFSETS = $00000002;
DIEFF_CARTESIAN = $00000010;
DIEFF_POLAR = $00000020;
DIEFF_SPHERICAL = $00000040;
DIEP_DURATION = $00000001;
DIEP_SAMPLEPERIOD = $00000002;
DIEP_GAIN = $00000004;
DIEP_TRIGGERBUTTON = $00000008;
DIEP_TRIGGERREPEATINTERVAL = $00000010;
DIEP_AXES = $00000020;
DIEP_DIRECTION = $00000040;
DIEP_ENVELOPE = $00000080;
DIEP_TYPESPECIFICPARAMS = $00000100;
{$IFDEF DIRECTX5}
DIEP_ALLPARAMS = $000001FF;
{$ELSE}
DIEP_STARTDELAY = $00000200;
DIEP_ALLPARAMS_DX5 = $000001FF;
DIEP_ALLPARAMS = $000003FF;
{$ENDIF}
DIEP_START = $20000000;
DIEP_NORESTART = $40000000;
DIEP_NODOWNLOAD = $80000000;
DIEB_NOTRIGGER = $FFFFFFFF;
DIES_SOLO = $00000001;
DIES_NODOWNLOAD = $80000000;
DIEGES_PLAYING = $00000001;
DIEGES_EMULATED = $00000002;
DIDEVTYPE_DEVICE = 1;
DIDEVTYPE_MOUSE = 2;
DIDEVTYPE_KEYBOARD = 3;
DIDEVTYPE_JOYSTICK = 4;
DI8DEVCLASS_ALL = 0;
DI8DEVCLASS_DEVICE = 1;
DI8DEVCLASS_Pointer = 2;
DI8DEVCLASS_KEYBOARD = 3;
DI8DEVCLASS_GAMECTRL = 4;
DI8DEVTYPE_DEVICE = $11;
DI8DEVTYPE_MOUSE = $12;
DI8DEVTYPE_KEYBOARD = $13;
DI8DEVTYPE_JOYSTICK = $14;
DI8DEVTYPE_GAMEPAD = $15;
DI8DEVTYPE_DRIVING = $16;
DI8DEVTYPE_FLIGHT = $17;
DI8DEVTYPE_1STPERSON = $18;
DI8DEVTYPE_DEVICECTRL = $19;
DI8DEVTYPE_SCREENPointer = $1A;
DI8DEVTYPE_REMOTE = $1B;
DI8DEVTYPE_SUPPLEMENTAL = $1C;
DIDEVTYPE_HID = $00010000;
DIDEVTYPEMOUSE_UNKNOWN = 1;
DIDEVTYPEMOUSE_TRADITIONAL = 2;
DIDEVTYPEMOUSE_FINGERSTICK = 3;
DIDEVTYPEMOUSE_TOUCHPAD = 4;
DIDEVTYPEMOUSE_TRACKBALL = 5;
DIDEVTYPEKEYBOARD_UNKNOWN = 0;
DIDEVTYPEKEYBOARD_PCXT = 1;
DIDEVTYPEKEYBOARD_OLIVETTI = 2;
DIDEVTYPEKEYBOARD_PCAT = 3;
DIDEVTYPEKEYBOARD_PCENH = 4;
DIDEVTYPEKEYBOARD_NOKIA1050 = 5;
DIDEVTYPEKEYBOARD_NOKIA9140 = 6;
DIDEVTYPEKEYBOARD_NEC98 = 7;
DIDEVTYPEKEYBOARD_NEC98LAPTOP = 8;
DIDEVTYPEKEYBOARD_NEC98106 = 9;
DIDEVTYPEKEYBOARD_JAPAN106 = 10;
DIDEVTYPEKEYBOARD_JAPANAX = 11;
DIDEVTYPEKEYBOARD_J3100 = 12;
DIDEVTYPEJOYSTICK_UNKNOWN = 1;
DIDEVTYPEJOYSTICK_TRADITIONAL = 2;
DIDEVTYPEJOYSTICK_FLIGHTSTICK = 3;
DIDEVTYPEJOYSTICK_GAMEPAD = 4;
DIDEVTYPEJOYSTICK_RUDDER = 5;
DIDEVTYPEJOYSTICK_WHEEL = 6;
DIDEVTYPEJOYSTICK_HEADTRACKER = 7;
DI8DEVTYPEMOUSE_UNKNOWN = 1;
DI8DEVTYPEMOUSE_TRADITIONAL = 2;
DI8DEVTYPEMOUSE_FINGERSTICK = 3;
DI8DEVTYPEMOUSE_TOUCHPAD = 4;
DI8DEVTYPEMOUSE_TRACKBALL = 5;
DI8DEVTYPEMOUSE_ABSOLUTE = 6;
DI8DEVTYPEKEYBOARD_UNKNOWN = 0;
DI8DEVTYPEKEYBOARD_PCXT = 1;
DI8DEVTYPEKEYBOARD_OLIVETTI = 2;
DI8DEVTYPEKEYBOARD_PCAT = 3;
DI8DEVTYPEKEYBOARD_PCENH = 4;
DI8DEVTYPEKEYBOARD_NOKIA1050 = 5;
DI8DEVTYPEKEYBOARD_NOKIA9140 = 6;
DI8DEVTYPEKEYBOARD_NEC98 = 7;
DI8DEVTYPEKEYBOARD_NEC98LAPTOP = 8;
DI8DEVTYPEKEYBOARD_NEC98106 = 9;
DI8DEVTYPEKEYBOARD_JAPAN106 = 10;
DI8DEVTYPEKEYBOARD_JAPANAX = 11;
DI8DEVTYPEKEYBOARD_J3100 = 12;
DI8DEVTYPE_LIMITEDGAMESUBTYPE = 1;
DI8DEVTYPEJOYSTICK_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
DI8DEVTYPEJOYSTICK_STANDARD = 2;
DI8DEVTYPEGAMEPAD_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
DI8DEVTYPEGAMEPAD_STANDARD = 2;
DI8DEVTYPEGAMEPAD_TILT = 3;
DI8DEVTYPEDRIVING_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
DI8DEVTYPEDRIVING_COMBINEDPEDALS = 2;
DI8DEVTYPEDRIVING_DUALPEDALS = 3;
DI8DEVTYPEDRIVING_THREEPEDALS = 4;
DI8DEVTYPEDRIVING_HANDHELD = 5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -