📄 directinput.pas
字号:
****************************************************************************)
const
GUID_SysMouse : TGUID = '{6F1D2B60-D5A0-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_SysMouse}
GUID_SysKeyboard : TGUID = '{6F1D2B61-D5A0-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_SysKeyboard}
GUID_Joystick : TGUID = '{6F1D2B70-D5A0-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_Joystick}
GUID_SysMouseEm : TGUID = '{6F1D2B80-D5A0-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_SysMouseEm}
GUID_SysMouseEm2 : TGUID = '{6F1D2B81-D5A0-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_SysMouseEm2}
GUID_SysKeyboardEm : TGUID = '{6F1D2B82-D5A0-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_SysKeyboardEm}
GUID_SysKeyboardEm2 : TGUID = '{6F1D2B83-D5A0-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_SysKeyboardEm2}
(****************************************************************************
*
* Predefined force feedback effects
*
****************************************************************************)
const
GUID_ConstantForce : TGUID = '{13541C20-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_ConstantForce}
GUID_RampForce : TGUID = '{13541C21-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_RampForce}
GUID_Square : TGUID = '{13541C22-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_Square}
GUID_Sine : TGUID = '{13541C23-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_Sine}
GUID_Triangle : TGUID = '{13541C24-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_Triangle}
GUID_SawtoothUp : TGUID = '{13541C25-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_SawtoothUp}
GUID_SawtoothDown : TGUID = '{13541C26-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_SawtoothDown}
GUID_Spring : TGUID = '{13541C27-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_Spring}
GUID_Damper : TGUID = '{13541C28-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_Damper}
GUID_Inertia : TGUID = '{13541C29-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_Inertia}
GUID_Friction : TGUID = '{13541C2A-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_Friction}
GUID_CustomForce : TGUID = '{13541C2B-8E33-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM GUID_CustomForce}
(****************************************************************************
*
* Interfaces and Structures...
*
****************************************************************************)
{$IFDEF DIRECTINPUT_VERSION_5}
(****************************************************************************
*
* IDirectInputEffect
*
****************************************************************************)
const
DIEFT_ALL = $00000000;
{$EXTERNALSYM DIEFT_ALL}
DIEFT_CONSTANTFORCE = $00000001;
{$EXTERNALSYM DIEFT_CONSTANTFORCE}
DIEFT_RAMPFORCE = $00000002;
{$EXTERNALSYM DIEFT_RAMPFORCE}
DIEFT_PERIODIC = $00000003;
{$EXTERNALSYM DIEFT_PERIODIC}
DIEFT_CONDITION = $00000004;
{$EXTERNALSYM DIEFT_CONDITION}
DIEFT_CUSTOMFORCE = $00000005;
{$EXTERNALSYM DIEFT_CUSTOMFORCE}
DIEFT_HARDWARE = $000000FF;
{$EXTERNALSYM DIEFT_HARDWARE}
DIEFT_FFATTACK = $00000200;
{$EXTERNALSYM DIEFT_FFATTACK}
DIEFT_FFFADE = $00000400;
{$EXTERNALSYM DIEFT_FFFADE}
DIEFT_SATURATION = $00000800;
{$EXTERNALSYM DIEFT_SATURATION}
DIEFT_POSNEGCOEFFICIENTS = $00001000;
{$EXTERNALSYM DIEFT_POSNEGCOEFFICIENTS}
DIEFT_POSNEGSATURATION = $00002000;
{$EXTERNALSYM DIEFT_POSNEGSATURATION}
DIEFT_DEADBAND = $00004000;
{$EXTERNALSYM DIEFT_DEADBAND}
DIEFT_STARTDELAY = $00008000;
{$EXTERNALSYM DIEFT_STARTDELAY}
//#define DIEFT_GETTYPE(n) LOBYTE(n)
function DIEFT_GETTYPE(n: Cardinal): Byte;
{$EXTERNALSYM DIEFT_GETTYPE}
const
DI_DEGREES = 100;
{$EXTERNALSYM DI_DEGREES}
DI_FFNOMINALMAX = 10000;
{$EXTERNALSYM DI_FFNOMINALMAX}
DI_SECONDS = 1000000;
{$EXTERNALSYM DI_SECONDS}
type
PDIConstantForce = ^TDIConstantForce;
DICONSTANTFORCE = packed record
lMagnitude: Longint;
end;
{$EXTERNALSYM DICONSTANTFORCE}
TDIConstantForce = DICONSTANTFORCE;
PDIRampForce = ^TDIRampForce;
DIRAMPFORCE = packed record
lStart: Longint;
lEnd: Longint;
end;
{$EXTERNALSYM DIRAMPFORCE}
TDIRampForce = DIRAMPFORCE;
PDIPeriodic = ^TDIPeriodic;
DIPERIODIC = packed record
dwMagnitude: DWORD;
lOffset: Longint;
dwPhase: DWORD;
dwPeriod: DWORD;
end;
{$EXTERNALSYM DIPERIODIC}
TDIPeriodic = DIPERIODIC;
PDICondition = ^TDICondition;
DICONDITION = packed record
lOffset: Longint;
lPositiveCoefficient: Longint;
lNegativeCoefficient: Longint;
dwPositiveSaturation: DWORD;
dwNegativeSaturation: DWORD;
lDeadBand: Longint;
end;
{$EXTERNALSYM DICONDITION}
TDICondition = DICONDITION;
PDICustomForce = ^TDICustomForce;
DICUSTOMFORCE = packed record
cChannels: DWORD;
dwSamplePeriod: DWORD;
cSamples: DWORD;
rglForceData: PLongint;
end;
{$EXTERNALSYM DICUSTOMFORCE}
TDICustomForce = DICUSTOMFORCE;
PDIEnvelope = ^TDIEnvelope;
DIENVELOPE = packed record
dwSize: DWORD; (* sizeof(DIENVELOPE) *)
dwAttackLevel: DWORD;
dwAttackTime: DWORD; (* Microseconds *)
dwFadeLevel: DWORD;
dwFadeTime: DWORD; (* Microseconds *)
end;
{$EXTERNALSYM DIENVELOPE}
TDIEnvelope = DIENVELOPE;
(* This structure is defined for DirectX 5.0 compatibility *)
PDIEffectDX5 = ^TDIEffectDX5;
DIEFFECT_DX5 = packed record
dwSize: DWORD; (* sizeof(DIEFFECT_DX5) *)
dwFlags: DWORD; (* DIEFF_* *)
dwDuration: DWORD; (* Microseconds *)
dwSamplePeriod: DWORD; (* Microseconds *)
dwGain: DWORD;
dwTriggerButton: DWORD; (* or DIEB_NOTRIGGER *)
dwTriggerRepeatInterval: DWORD; (* Microseconds *)
cAxes: DWORD; (* Number of axes *)
rgdwAxes: PDWORD; (* Array of axes *)
rglDirection: PLongint; (* Array of directions *)
lpEnvelope: PDIEnvelope; (* Optional *)
cbTypeSpecificParams: DWORD; (* Size of params *)
lpvTypeSpecificParams: Pointer; (* Pointer to params *)
end;
{$EXTERNALSYM DIEFFECT_DX5}
TDIEffectDX5 = DIEFFECT_DX5;
PDIEffect = ^TDIEffect;
DIEFFECT = packed record
dwSize: DWORD; (* sizeof(DIEFFECT) *)
dwFlags: DWORD; (* DIEFF_* *)
dwDuration: DWORD; (* Microseconds *)
dwSamplePeriod: DWORD; (* Microseconds *)
dwGain: DWORD;
dwTriggerButton: DWORD; (* or DIEB_NOTRIGGER *)
dwTriggerRepeatInterval: DWORD; (* Microseconds *)
cAxes: DWORD; (* Number of axes *)
rgdwAxes: PDWORD; (* Array of axes *)
rglDirection: PLongint; (* Array of directions *)
lpEnvelope: PDIEnvelope; (* Optional *)
cbTypeSpecificParams: DWORD; (* Size of params *)
lpvTypeSpecificParams: Pointer; (* Pointer to params *)
{$IFDEF DIRECTINPUT_VERSION_6}
dwStartDelay: DWORD; (* Microseconds *)
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0600 *)
end;
{$EXTERNALSYM DIEFFECT}
TDIEffect = DIEFFECT;
DIEFFECT_DX6 = DIEFFECT;
{$EXTERNALSYM DIEFFECT_DX6}
TDIEffectDX6 = DIEFFECT_DX6;
PDIEffectDX6 = ^TDIEffectDX6;
{$IFDEF DIRECTINPUT_VERSION_7}
PDIFileEffect = ^TDIFileEffect;
DIFILEEFFECT = packed record
dwSize: DWORD;
GuidEffect: TGUID;
lpDiEffect: PDIEffect;
szFriendlyName: array [0..MAX_PATH-1] of Char;
end;
{$EXTERNALSYM DIFILEEFFECT}
TDIFileEffect = DIFILEEFFECT;
TDIEnumEffectsInFileCallback = function (const Effect: TDIFileEffect; Data: Pointer): BOOL; stdcall;
{$NODEFINE TDIEnumEffectsInFileCallback}
{$HPPEMIT 'typedef LPDIENUMEFFECTSINFILECALLBACK TDIEnumEffectsInFileCallback;'}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
const
DIEFF_OBJECTIDS = $00000001;
{$EXTERNALSYM DIEFF_OBJECTIDS}
DIEFF_OBJECTOFFSETS = $00000002;
{$EXTERNALSYM DIEFF_OBJECTOFFSETS}
DIEFF_CARTESIAN = $00000010;
{$EXTERNALSYM DIEFF_CARTESIAN}
DIEFF_POLAR = $00000020;
{$EXTERNALSYM DIEFF_POLAR}
DIEFF_SPHERICAL = $00000040;
{$EXTERNALSYM DIEFF_SPHERICAL}
DIEP_DURATION = $00000001;
{$EXTERNALSYM DIEP_DURATION}
DIEP_SAMPLEPERIOD = $00000002;
{$EXTERNALSYM DIEP_SAMPLEPERIOD}
DIEP_GAIN = $00000004;
{$EXTERNALSYM DIEP_GAIN}
DIEP_TRIGGERBUTTON = $00000008;
{$EXTERNALSYM DIEP_TRIGGERBUTTON}
DIEP_TRIGGERREPEATINTERVAL = $00000010;
{$EXTERNALSYM DIEP_TRIGGERREPEATINTERVAL}
DIEP_AXES = $00000020;
{$EXTERNALSYM DIEP_AXES}
DIEP_DIRECTION = $00000040;
{$EXTERNALSYM DIEP_DIRECTION}
DIEP_ENVELOPE = $00000080;
{$EXTERNALSYM DIEP_ENVELOPE}
DIEP_TYPESPECIFICPARAMS = $00000100;
{$EXTERNALSYM DIEP_TYPESPECIFICPARAMS}
{$IFDEF DIRECTINPUT_VERSION_6}
DIEP_STARTDELAY = $00000200;
{$EXTERNALSYM DIEP_STARTDELAY}
DIEP_ALLPARAMS_DX5 = $000001FF;
{$EXTERNALSYM DIEP_ALLPARAMS_DX5}
DIEP_ALLPARAMS = $000003FF;
{$EXTERNALSYM DIEP_ALLPARAMS}
{$ELSE} (* DIRECTINPUT_VERSION < 0x0600 *)
DIEP_ALLPARAMS = $000001FF;
{$EXTERNALSYM DIEP_ALLPARAMS}
{$ENDIF} (* DIRECTINPUT_VERSION ? 0x0600 *)
DIEP_START = $20000000;
{$EXTERNALSYM DIEP_START}
DIEP_NORESTART = $40000000;
{$EXTERNALSYM DIEP_NORESTART}
DIEP_NODOWNLOAD = $80000000;
{$EXTERNALSYM DIEP_NODOWNLOAD}
DIEB_NOTRIGGER = $FFFFFFFF;
{$EXTERNALSYM DIEB_NOTRIGGER}
DIES_SOLO = $00000001;
{$EXTERNALSYM DIES_SOLO}
DIES_NODOWNLOAD = $80000000;
{$EXTERNALSYM DIES_NODOWNLOAD}
DIEGES_PLAYING = $00000001;
{$EXTERNALSYM DIEGES_PLAYING}
DIEGES_EMULATED = $00000002;
{$EXTERNALSYM DIEGES_EMULATED}
type
PDIEffEscape = ^TDIEffEscape;
DIEFFESCAPE = packed record
dwSize: DWORD;
dwCommand: DWORD;
lpvInBuffer: Pointer;
cbInBuffer: DWORD;
lpvOutBuffer: Pointer;
cbOutBuffer: DWORD;
end;
{$EXTERNALSYM DIEFFESCAPE}
TDIEffEscape = DIEFFESCAPE;
type
{$EXTERNALSYM IDirectInputEffect}
IDirectInputEffect = interface(IUnknown)
[SID_IDirectInputEffect]
(*** IDirectInputEffect methods ***)
function Initialize(hinst: THandle; dwVersion: DWORD; const rguid: TGUID): HResult; stdcall;
function GetEffectGuid(out pguid: TGUID): HResult; stdcall;
function GetParameters(var peff: TDIEffect; dwFlags: DWORD): HResult; stdcall;
function SetParameters(const peff: TDIEffect; dwFlags: DWORD): HResult; stdcall;
function Start(dwIterations, dwFlags: DWORD): HResult; stdcall;
function Stop: HResult; stdcall;
function GetEffectStatus(out pdwFlags: DWORD): HResult; stdcall;
function Download: HResult; stdcall;
function Unload: HResult; stdcall;
function Escape(var pesc: PDIEffEscape): HResult; stdcall;
end;
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
(****************************************************************************
*
* IDirectInputDevice
*
****************************************************************************)
const
{$IFNDEF DIRECTINPUT_VERSION_8} (* #if DIRECTINPUT_VERSION <= 0x700 *)
DIDEVTYPE_DEVICE = 1;
{$EXTERNALSYM DIDEVTYPE_DEVICE}
DIDEVTYPE_MOUSE = 2;
{$EXTERNALSYM DIDEVTYPE_MOUSE}
DIDEVTYPE_KEYBOARD = 3;
{$EXTERNALSYM DIDEVTYPE_KEYBOARD}
DIDEVTYPE_JOYSTICK = 4;
{$EXTERNALSYM DIDEVTYPE_JOYSTICK}
{$ELSE}
DI8DEVCLASS_ALL = 0;
{$EXTERNALSYM DI8DEVCLASS_ALL}
DI8DEVCLASS_DEVICE = 1;
{$EXTERNALSYM DI8DEVCLASS_DEVICE}
DI8DEVCLASS_POINTER = 2;
{$EXTERNALSYM DI8DEVCLASS_POINTER}
DI8DEVCLASS_KEYBOARD = 3;
{$EXTERNALSYM DI8DEVCLASS_KEYBOARD}
DI8DEVCLASS_GAMECTRL = 4;
{$EXTERNALSYM DI8DEVCLASS_GAMECTRL}
DI8DEVTYPE_DEVICE = $11;
{$EXTERNALSYM DI8DEVTYPE_DEVICE}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -