📄 directinput.pas
字号:
DIPROP_SATURATION = MAKEDIPROP(6);
DIPROP_FFGAIN = MAKEDIPROP(7);
DIPROP_FFLOAD = MAKEDIPROP(8);
DIPROP_AUTOCENTER = MAKEDIPROP(9);
DIPROPAUTOCENTER_OFF = 0;
DIPROPAUTOCENTER_ON = 1;
DIPROP_CALIBRATIONMODE = MAKEDIPROP(10);
DIPROPCALIBRATIONMODE_COOKED = 0;
DIPROPCALIBRATIONMODE_RAW = 1;
DIPROP_CALIBRATION = MAKEDIPROP(11);
DIPROP_GUIDANDPATH = MAKEDIPROP(12);
DIPROP_INSTANCENAME = MAKEDIPROP(13);
DIPROP_PRODUCTNAME = MAKEDIPROP(14);
DIPROP_JOYSTICKID = MAKEDIPROP(15);
DIPROP_GETPORTDISPLAYNAME = MAKEDIPROP(16);
DIPROP_ENABLEREPORTID = MAKEDIPROP(17);
DIPROP_GETPHYSICALRANGE = MAKEDIPROP(18);
DIPROP_GETLOGICALRANGE = MAKEDIPROP(19);
type
PDIDeviceObjectData = ^TDIDeviceObjectData;
TDIDeviceObjectData = packed record
dwOfs: DWORD;
dwData: DWORD;
dwTimeStamp: DWORD;
dwSequence: DWORD;
end;
const
DIGDD_PEEK = $00000001;
{
#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
(int) ((dwSequence1) - (dwSequence2)) cmp 0
}
DISCL_EXCLUSIVE = $00000001;
DISCL_NONEXCLUSIVE = $00000002;
DISCL_FOREGROUND = $00000004;
DISCL_BACKGROUND = $00000008;
DISCL_NOWINKEY = $00000010;
type
PDIDeviceInstance_DX3A = ^TDIDeviceInstance_DX3A;
TDIDeviceInstance_DX3A = packed record
dwSize: DWORD;
guidInstance: TGUID;
guidProduct: TGUID;
dwDevType: DWORD;
tszInstanceName: Array [0..MAX_PATH-1] of AnsiChar;
tszProductName: Array [0..MAX_PATH-1] of AnsiChar;
end;
PDIDeviceInstance_DX3W = ^TDIDeviceInstance_DX3W;
TDIDeviceInstance_DX3W = packed record
dwSize: DWORD;
guidInstance: TGUID;
guidProduct: TGUID;
dwDevType: DWORD;
tszInstanceName: Array [0..MAX_PATH-1] of WideChar;
tszProductName: Array [0..MAX_PATH-1] of WideChar;
end;
PDIDeviceInstance_DX3 = ^TDIDeviceInstance_DX3;
{$IFDEF UNICODE}
TDIDeviceInstance_DX3 = TDIDeviceInstance_DX3W;
{$ELSE}
TDIDeviceInstance_DX3 = TDIDeviceInstance_DX3A;
{$ENDIF}
PDIDeviceInstance_DX5A = ^TDIDeviceInstance_DX5A;
TDIDeviceInstance_DX5A = packed record
dwSize: DWORD;
guidInstance: TGUID;
guidProduct: TGUID;
dwDevType: DWORD;
tszInstanceName: Array [0..MAX_PATH-1] of AnsiChar;
tszProductName: Array [0..MAX_PATH-1] of AnsiChar;
guidFFDriver: TGUID;
wUsagePage: WORD;
wUsage: WORD;
end;
PDIDeviceInstance_DX5W = ^TDIDeviceInstance_DX5W;
TDIDeviceInstance_DX5W = packed record
dwSize: DWORD;
guidInstance: TGUID;
guidProduct: TGUID;
dwDevType: DWORD;
tszInstanceName: Array [0..MAX_PATH-1] of WideChar;
tszProductName: Array [0..MAX_PATH-1] of WideChar;
guidFFDriver: TGUID;
wUsagePage: WORD;
wUsage: WORD;
end;
PDIDeviceInstance_DX5 = ^TDIDeviceInstance_DX5;
{$IFDEF UNICODE}
TDIDeviceInstance_DX5 = TDIDeviceInstance_DX5W;
{$ELSE}
TDIDeviceInstance_DX5 = TDIDeviceInstance_DX5A;
{$ENDIF}
PDIDeviceInstanceA = ^TDIDeviceInstanceA;
PDIDeviceInstanceW = ^TDIDeviceInstanceW;
PDIDeviceInstance = ^TDIDeviceInstance;
{$IFDEF DIRECTX3}
TDIDeviceInstanceA = TDIDeviceInstance_DX3A;
TDIDeviceInstanceW = TDIDeviceInstance_DX3W;
TDIDeviceInstance = TDIDeviceInstance_DX3;
{$ELSE}
TDIDeviceInstanceA = TDIDeviceInstance_DX5A;
TDIDeviceInstanceW = TDIDeviceInstance_DX5W;
TDIDeviceInstance = TDIDeviceInstance_DX5;
{$ENDIF}
IDirectInputDeviceA = interface (IUnknown)
['{5944E680-C92E-11CF-BFC7-444553540000}']
(*** IDirectInputDeviceA methods ***)
function GetCapabilities(var lpDIDevCaps: TDIDevCaps) : HResult; stdcall;
function EnumObjects(lpCallback: TDIEnumDeviceObjectsCallbackA;
pvRef: Pointer; dwFlags: DWORD) : 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: DWORD; lpvData: Pointer) : HResult; stdcall;
function GetDeviceData(cbObjectData: DWORD; rgdod: PDIDeviceObjectData;
var pdwInOut: DWORD; dwFlags: DWORD) : HResult; stdcall;
function SetDataFormat(var lpdf: TDIDataFormat) : HResult; stdcall;
function SetEventNotification(hEvent: THandle) : HResult; stdcall;
function SetCooperativeLevel(hwnd: HWND; dwFlags: DWORD) : HResult; stdcall;
function GetObjectInfo(var pdidoi: TDIDeviceObjectInstanceA; dwObj: DWORD;
dwHow: DWORD) : HResult; stdcall;
function GetDeviceInfo(var pdidi: TDIDeviceInstanceA) : HResult; stdcall;
function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD) : HResult; stdcall;
function Initialize(hinst: THandle; dwVersion: DWORD; 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: DWORD) : 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: DWORD; lpvData: Pointer) : HResult; stdcall;
function GetDeviceData(cbObjectData: DWORD; rgdod: PDIDeviceObjectData;
var pdwInOut: DWORD; dwFlags: DWORD) : HResult; stdcall;
function SetDataFormat(var lpdf: TDIDataFormat) : HResult; stdcall;
function SetEventNotification(hEvent: THandle) : HResult; stdcall;
function SetCooperativeLevel(hwnd: HWND; dwFlags: DWORD) : HResult; stdcall;
function GetObjectInfo(var pdidoi: TDIDeviceObjectInstanceW; dwObj: DWORD;
dwHow: DWORD) : HResult; stdcall;
function GetDeviceInfo(var pdidi: TDIDeviceInstanceW) : HResult; stdcall;
function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD) : HResult; stdcall;
function Initialize(hinst: THandle; dwVersion: DWORD; const rguid: TGUID) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInputDevice = IDirectInputDeviceW;
{$ELSE}
IDirectInputDevice = IDirectInputDeviceA;
{$ENDIF}
const
DISFFC_RESET = $00000001;
DISFFC_STOPALL = $00000002;
DISFFC_PAUSE = $00000004;
DISFFC_CONTINUE = $00000008;
DISFFC_SETACTUATORSON = $00000010;
DISFFC_SETACTUATORSOFF = $00000020;
DIGFFS_EMPTY = $00000001;
DIGFFS_STOPPED = $00000002;
DIGFFS_PAUSED = $00000004;
DIGFFS_ACTUATORSON = $00000010;
DIGFFS_ACTUATORSOFF = $00000020;
DIGFFS_POWERON = $00000040;
DIGFFS_POWEROFF = $00000080;
DIGFFS_SAFETYSWITCHON = $00000100;
DIGFFS_SAFETYSWITCHOFF = $00000200;
DIGFFS_USERFFSWITCHON = $00000400;
DIGFFS_USERFFSWITCHOFF = $00000800;
DIGFFS_DEVICELOST = $80000000;
type
PDIEffectInfoA = ^TDIEffectInfoA;
TDIEffectInfoA = packed record
dwSize : DWORD;
guid : TGUID;
dwEffType : DWORD;
dwStaticParams : DWORD;
dwDynamicParams : DWORD;
tszName : array [0..MAX_PATH-1] of CHAR;
end;
PDIEffectInfoW = ^TDIEffectInfoW;
TDIEffectInfoW = packed record
dwSize : DWORD;
guid : TGUID;
dwEffType : DWORD;
dwStaticParams : DWORD;
dwDynamicParams : DWORD;
tszName : array [0..MAX_PATH-1] of WCHAR;
end;
PDIEffectInfo = ^TDIEffectInfo;
{$IFDEF UNICODE}
TDIEffectInfo = TDIEffectInfoW;
{$ELSE}
TDIEffectInfo = TDIEffectInfoA;
{$ENDIF}
const
DISDD_CONTINUE = $00000001;
// Bug fix & deviation from the SDK: Must return DIENUM_STOP or
// DIENUM_CONTINUE (=1) in order to work with the debug version of DINPUT.DLL
type
TDIEnumEffectsCallbackA =
function(var pdei: TDIEffectInfoA; pvRef: pointer): Integer; stdcall; // BOOL; stdcall;
TDIEnumEffectsCallbackW =
function(var pdei: TDIEffectInfoW; pvRef: pointer): Integer; stdcall; // BOOL; stdcall;
TDIEnumEffectsCallback =
function(var pdei: TDIEffectInfo; pvRef: pointer) : Integer; stdcall; // BOOL; stdcall;
TDIEnumEffectsProc = TDIEnumEffectsCallback;
TDIEnumCreatedEffectObjectsCallback =
function(peff: IDirectInputEffect; pvRev: pointer): Integer; stdcall; // BOOL; 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: DWORD) : HResult; stdcall;
function GetEffectInfo(pdei: TDIEffectInfoA; const rguid: TGUID) : HResult; stdcall;
function GetForceFeedbackState(var pdwOut: DWORD) : HResult; stdcall;
function SendForceFeedbackCommand(dwFlags: DWORD) : HResult; stdcall;
function EnumCreatedEffectObjects(lpCallback:
TDIEnumCreatedEffectObjectsCallback;
pvRef: pointer; fl: DWORD) : HResult; stdcall;
function Escape(var pesc: TDIEffEscape) : HResult; stdcall;
function Poll : HResult; stdcall;
function SendDeviceData
(cbObjectData: DWORD; var rgdod: TDIDeviceObjectData;
var pdwInOut: DWORD; fl: DWORD) : 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: DWORD) : HResult; stdcall;
function GetEffectInfo(pdei: TDIEffectInfoW; const rguid: TGUID) : HResult; stdcall;
function GetForceFeedbackState(var pdwOut: DWORD) : HResult; stdcall;
function SendForceFeedbackCommand(dwFlags: DWORD) : HResult; stdcall;
function EnumCreatedEffectObjects(lpCallback:
TDIEnumCreatedEffectObjectsCallback;
pvRef: pointer; fl: DWORD) : HResult; stdcall;
function Escape(var pesc: TDIEffEscape) : HResult; stdcall;
function Poll : HResult; stdcall;
function SendDeviceData
(cbObjectData: DWORD; var rgdod: TDIDeviceObjectData;
var pdwInOut: DWORD; fl: DWORD) : HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInputDevice2 = IDirectInputDevice2W;
{$ELSE}
IDirectInputDevice2 = IDirectInputDevice2A;
{$ENDIF}
const
DIFEF_DEFAULT = $00000000;
DIFEF_INCLUDENONSTANDARD = $00000001;
DIFEF_MODIFYIFNEEDED = $00000010;
///Weitermachen: (as: nur die Deklarationen eingef黮lt, die ich zum Testen gebraucht habe)
type
TEnumEffectsInFileCallback = function(gaga, huhu: Integer): HResult;
type
IDirectInputDevice7W = interface (IDirectInputDevice2W)
['{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}']
(*** IDirectInputDevice7A methods ***)
function EnumEffectsInFile(const lpszFileName: PChar;
pec: TEnumEffectsInFileCallback; pvRef: Pointer; dwFlags: DWord): HResult; stdcall;
function WriteEffectToFile(const lpszFileName: PChar;
dwEntries: DWord; const rgDIFileEft: PDIFileEffect; dwFlags: DWord): HResult; stdcall;
end;
IDirectInputDevice7A = interface (IDirectInputDevice2A)
['{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}']
function EnumEffectsInFile(const lpszFileName: PChar;
pec: TEnumEffectsInFileCallback; pvRef: Pointer; dwFlags: DWord): HResult; stdcall;
function WriteEffectToFile(const lpszFileName: PChar;
dwEntries: DWord; const rgDIFileEft: PDIFileEffect; dwFlags: DWord): HResult; stdcall;
end;
{$IFDEF UNICODE}
IDirectInputDevice7 = IDirectInputDevice7W;
{$ELSE}
IDirectInputDevice7 = IDirectInputDevice7A;
{$ENDIF}
(****************************************************************************
*
* Mouse
*
****************************************************************************)
type
PDIMouseState = ^TDIMouseState;
TDIMouseState = packed record
lX: Longint;
lY: Longint;
lZ: Longint;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -