📄 directinput.pas
字号:
dwMagnitude : Cardinal;
lOffset : LongInt;
dwPhase : Cardinal;
dwPeriod : Cardinal;
end;
PDIPropHeader = ^TDIPropHeader;
TDIPropHeader = packed record
dwSize : Cardinal;
dwHeaderSize : Cardinal;
dwObj : Cardinal;
dwHow : Cardinal;
end;
const
MAXCPOINTSNUM = 8;
type
PDIPropCal = ^TDIPropCal;
TDIPropCal = packed record
diph : TDIPropHeader;
lMin : LongInt;
lCenter : LongInt;
lMax : LongInt;
end;
PDIPropCPoints = ^TDIPropCPoints;
TDIPropCPoints = packed record
diph : TDIPropHeader;
dwCPointsNum : Cardinal;
cp : array [0..MAXCPOINTSNUM-1] of TCPoint;
end;
PDIPropDWord = ^TDIPropDWord;
TDIPropDWord = packed record
diph : TDIPropHeader;
dwData : Cardinal;
end;
PDIPropGUIDAndPath = ^TDIPropGUIDAndPath;
TDIPropGUIDAndPath = packed record
diph : TDIPropHeader;
guidClass : TGUID;
wszPath : array [0..MAX_PATH-1] of WideChar;
end;
PDIPropPointer = ^TDIPropPointer;
TDIPropPointer = packed record
diph : TDIPropHeader;
uData : Pointer;
end;
PDIPropRange = ^TDIPropRange;
TDIPropRange = packed record
diph : TDIPropHeader;
lMin : Longint;
lMax : Longint;
end;
PDIPropString = ^TDIPropString;
TDIPropString = packed record
diph: TDIPropHeader;
wsz: array [0..MAX_PATH-1] of WideChar;
end;
PDIRampForce = ^TDIRampForce;
TDIRampForce = packed record
lStart : LongInt;
lEnd : LongInt;
end;
MAKEDIPROP = PGUID;
(****************************************************************************
*
* Class IDs
*
****************************************************************************)
const
CLSID_DirectInput : TGUID = '{25E609E0-B259-11CF-BFC7-444553540000}';
CLSID_DirectInput8 : TGUID = '{25E609E4-B259-11CF-BFC7-444553540000}';
CLSID_DirectInputDevice : TGUID = '{25E609E1-B259-11CF-BFC7-444553540000}';
CLSID_DirectInputDevice8 : TGUID = '{25E609E5-B259-11CF-BFC7-444553540000}';
(****************************************************************************
*
* Predefined object types
*
****************************************************************************)
GUID_XAxis : TGUID = '{A36D02E0-C9F3-11CF-BFC7-444553540000}';
GUID_YAxis : TGUID = '{A36D02E1-C9F3-11CF-BFC7-444553540000}';
GUID_ZAxis : TGUID = '{A36D02E2-C9F3-11CF-BFC7-444553540000}';
GUID_RxAxis : TGUID = '{A36D02F4-C9F3-11CF-BFC7-444553540000}';
GUID_RyAxis : TGUID = '{A36D02F5-C9F3-11CF-BFC7-444553540000}';
GUID_RzAxis : TGUID = '{A36D02E3-C9F3-11CF-BFC7-444553540000}';
GUID_Slider : TGUID = '{A36D02E4-C9F3-11CF-BFC7-444553540000}';
GUID_Button : TGUID = '{A36D02F0-C9F3-11CF-BFC7-444553540000}';
GUID_Key : TGUID = '{55728220-D33C-11CF-BFC7-444553540000}';
GUID_POV : TGUID = '{A36D02F2-C9F3-11CF-BFC7-444553540000}';
GUID_Unknown : TGUID = '{A36D02F3-C9F3-11CF-BFC7-444553540000}';
(****************************************************************************
*
* Predefined product GUIDs
*
****************************************************************************)
GUID_SysMouse : TGUID = '{6F1D2B60-D5A0-11CF-BFC7-444553540000}';
GUID_SysKeyboard : TGUID = '{6F1D2B61-D5A0-11CF-BFC7-444553540000}';
GUID_Joystick : TGUID = '{6F1D2B70-D5A0-11CF-BFC7-444553540000}';
GUID_SysMouseEm : TGUID = '{6F1D2B80-D5A0-11CF-BFC7-444553540000}';
GUID_SysMouseEm2 : TGUID = '{6F1D2B81-D5A0-11CF-BFC7-444553540000}';
GUID_SysKeyboardEm : TGUID = '{6F1D2B82-D5A0-11CF-BFC7-444553540000}';
GUID_SysKeyboardEm2 : TGUID = '{6F1D2B83-D5A0-11CF-BFC7-444553540000}';
(****************************************************************************
*
* Predefined force feedback effects
*
****************************************************************************)
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; dwVersion : Cardinal; const rguid : TGUID) : HResult; stdcall;
function GetEffectGuid(var pguid : TGUID) : HResult; stdcall;
function GetParameters(var peff : TDIEffect; dwFlags : Cardinal) : HResult; stdcall;
function SetParameters(var peff : TDIEffect; dwFlags : Cardinal) : HResult; stdcall;
function Start(dwIterations : Cardinal; dwFlags : Cardinal) : HResult; stdcall;
function Stop : HResult; stdcall;
function GetEffectStatus(var pdwFlags : Cardinal) : 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 = function (var lpddoi : TDIDeviceObjectInstance; pvRef : Pointer) : Integer; stdcall;
IDirectInputDeviceA = interface (IUnknown)
['{5944E680-C92E-11CF-BFC7-444553540000}']
(*** IDirectInputDeviceA methods ***)
function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackA; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
function GetProperty(rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
function SetProperty(rguidProp : PGUID; const pdiph : TDIPropHeader) : HResult; stdcall;
function Acquire : HResult; stdcall;
function Unacquire : HResult; stdcall;
function GetDeviceState(cbData : Cardinal; lpvData : Pointer) : HResult; stdcall;
function GetDeviceData(cbObjectData : Cardinal; rgdod : PDIDeviceObjectData; var pdwInOut : Cardinal; dwFlags : Cardinal) : HResult; stdcall;
function SetDataFormat(var lpdf : TDIDataFormat) : HResult; stdcall;
function SetEventNotification(hEvent : THandle) : HResult; stdcall;
function SetCooperativeLevel(hwnd : HWND; dwFlags : Cardinal) : HResult; stdcall;
function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceA; dwObj : Cardinal; dwHow : DWORD) : HResult; stdcall;
function GetDeviceInfo(var pdidi : TDIDeviceInstanceA) : HResult; stdcall;
function RunControlPanel(hwndOwner : HWND; dwFlags : DWORD) : HResult; stdcall;
function Initialize(hinst : THandle; dwVersion : Cardinal; const rguid : TGUID) : HResult; stdcall;
end;
IDirectInputDeviceW = interface (IUnknown)
['{5944E681-C92E-11CF-BFC7-444553540000}']
(*** IDirectInputDeviceW methods ***)
function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackW; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
function GetProperty(rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
function SetProperty(rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
function Acquire : HResult; stdcall;
function Unacquire : HResult; stdcall;
function GetDeviceState(cbData : Cardinal; lpvData : Pointer) : HResult; stdcall;
function GetDeviceData(cbObjectData : Cardinal; rgdod : PDIDeviceObjectData; var pdwInOut : Cardinal; dwFlags : Cardinal) : HResult; stdcall;
function SetDataFormat(var lpdf : TDIDataFormat) : HResult; stdcall;
function SetEventNotification(hEvent : THandle) : HResult; stdcall;
function SetCooperativeLevel(hwnd : HWND; dwFlags : Cardinal) : HResult; stdcall;
function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceW; dwObj : Cardinal; dwHow : Cardinal) : HResult; stdcall;
function GetDeviceInfo(var pdidi : TDIDeviceInstanceW) : HResult; stdcall;
function RunControlPanel(hwndOwner : HWND; dwFlags : Cardinal) : HResult; stdcall;
function Initialize(hinst : THandle; dwVersion : Cardinal; const rguid : TGUID) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInputDevice = IDirectInputDeviceW;
{$ELSE}
IDirectInputDevice = IDirectInputDeviceA;
{$ENDIF}
type
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;
IDirectInputDevice2A = interface (IDirectInputDeviceA)
['{5944E682-C92E-11CF-BFC7-444553540000}']
(*** IDirectInputDevice2A methods ***)
function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; var ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult; stdcall;
function EnumEffects(lpCallback: TDIEnumEffectsCallbackA; pvRef : Pointer; dwEffType : Cardinal) : HResult; stdcall;
function GetEffectInfo(var pdei : TDIEffectInfoA; const rguid : TGUID) : HResult; stdcall;
function GetForceFeedbackState(var pdwOut : Cardinal) : HResult; stdcall;
function SendForceFeedbackCommand(dwFlags : Cardinal) : HResult; stdcall;
function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : Pointer; fl : Cardinal) : HResult; stdcall;
function Escape(var pesc : TDIEffEscape) : HResult; stdcall;
function Poll : HResult; stdcall;
function SendDeviceData(cbObjectData : Cardinal; var rgdod : TDIDeviceObjectData; var pdwInOut : Cardinal; fl : Cardinal) : HResult; stdcall;
end;
IDirectInputDevice2W = interface (IDirectInputDeviceW)
['{5944E683-C92E-11CF-BFC7-444553540000}']
(*** IDirectInputDevice2W methods ***)
function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; var ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult; stdcall;
function EnumEffects(lpCallback : TDIEnumEffectsCallbackW; pvRef : pointer; dwEffType : Cardinal) : HResult; stdcall;
function GetEffectInfo(var pdei : TDIEffectInfoW; const rguid : TGUID) : HResult; stdcall;
function GetForceFeedbackState(var pdwOut : Cardinal) : HResult; stdcall;
function SendForceFeedbackCommand(dwFlags : Cardinal) : HResult; stdcall;
function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : pointer; fl : Cardinal) : HResult; stdcall;
function Escape(var pesc : TDIEffEscape) : HResult; stdcall;
function Poll : HResult; stdcall;
function SendDeviceData(cbObjectData : Cardinal; var rgdod : TDIDeviceObjectData; var pdwInOut : Cardinal; fl : Cardinal) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInputDevice2 = IDirectInputDevice2W;
{$ELSE}
IDirectInputDevice2 = IDirectInputDevice2A;
{$ENDIF}
TEnumEffectsInFileCallback = function(var lpDiFileEf : TDIFileEffect; pvRef : Pointer) : Integer; stdcall;
IDirectInputDevice7A = interface (IDirectInputDevice2A)
['{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}']
function EnumEffectsInFile(const lpszFileName : PChar; pec : TEnumEffectsInFileCallback; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
function WriteEffectToFile(const lpszFileName : PChar; dwEntries : Cardinal; const rgDIFileEft : PDIFileEffect; dwFlags : Cardinal) : HResult; stdcall;
end;
IDirectInputDevice7W = interface (IDirectInputDevice2W)
['{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}']
(*** IDirectInputDevice7A methods ***)
function EnumEffectsInFile(const lpszFileName : PWideChar; pec : TEnumEffectsInFileCallback; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
function WriteEffectToFile(const lpszFileName : PWideChar; dwEntries : Cardinal; const rgDIFileEft : PDIFileEffect; dwFlags : Cardinal) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInputDevice7 = IDirectInputDevice7W;
{$ELSE}
IDirectInputDevice7 = IDirectInputDevice7A;
{$ENDIF}
IDirectInputDevice8A = interface (IDirectInputDevice7A)
['{54D41080-DC15-4833-A41B-748F73A38179}']
(*** IDirectInputDevice8A methods ***)
function BuildActionMap(var lpdiaf : TDIActionFormatA; const lpszUserName : PAnsiChar; dwFlags : Cardinal) : HResult; stdcall;
function SetActionMap(var lpdiActionFormat : TDIActionFormatA; const lptszUserName : PAnsiChar; dwFlags : Cardinal) : HResult; stdcall;
function GetImageInfo(var lpdiDevImageInfoHeader : TDIDeviceImageInfoHeaderA) : HResult; stdcall;
end;
IDirectInputDevice8W = interface (IDirectInputDevice7W)
['{54D41081-DC15-4833-A41B-748F73A38179}']
(*** IDirectInputDevice8A methods ***)
function BuildActionMap(var lpdiaf : TDIActionFormatW; const lpszUserName : PWideChar; dwFlags : Cardinal) : HResult; stdcall;
function SetActionMap(var lpdiActionFormat : TDIActionFormatW; const lptszUserName : PWideChar; dwFlags : Cardinal) : 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;
IDirectInputA = interface (IUnknown)
['{89521360-AA8A-11CF-BFC7-444553540000}']
(*** IDirectInputA methods ***)
function CreateDevice(const rguid : TGUID; out lplpDirectInputDevice : IDirectInputDeviceA; pUnkOuter : IUnknown) : HResult; stdcall;
function EnumDevices(dwDevType : Cardinal; lpCallback : TDIEnumDevicesCallbackA; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
function RunControlPanel(hwndOwner : HWND; dwFlags : Cardinal) : HResult; stdcall;
function Initialize(hinst : THandle; dwVersion : Cardinal) : HResult; stdcall;
end;
IDirectInputW = interface (IUnknown)
['{89521361-AA8A-11CF-BFC7-444553540000}']
(*** IDirectInputW methods ***)
function CreateDevice(const rguid : TGUID; var lplpDirectInputDevice : IDirectInputDeviceW; pUnkOuter : IUnknown) : HResult; stdcall;
function EnumDevices(dwDevType : Cardinal; lpCallback : TDIEnumDevicesCallbackW; pvRef : Pointer; dwFlags : DWORD) : HResult; stdcall;
function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
function RunControlPanel(hwndOwner : HWND; dwFlags : Cardinal) : HResult; stdcall;
function Initialize(hinst : THandle; dwVersion : Cardinal) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInput = IDirectInputW;
{$ELSE}
IDirectInput = IDirectInputA;
{$ENDIF}
IDirectInput2A = interface (IDirectInputA)
['{5944E662-AA8A-11CF-BFC7-444553540000}']
(*** IDirectInput2A methods ***)
function FindDevice(const rguidClass : TGUID; ptszName : PAnsiChar; out pguidInstance : TGUID): HResult; stdcall;
end;
IDirectInput2W = interface (IDirectInputW)
['{5944E663-AA8A-11CF-BFC7-444553540000}']
(*** IDirectInput2W methods ***)
function FindDevice(const rguidClass : TGUID; ptszName : PWideChar; out pguidInstance : TGUID): HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInput2 = IDirectInput2W;
{$ELSE}
IDirectInput2 = IDirectInput2A;
{$ENDIF}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -