@@ -54,6 +54,7 @@ TMain = class(TForm)
5454 procedure FormCreate (Sender: TObject);
5555 procedure Button1Click (Sender: TObject);
5656 procedure Button2Click (Sender: TObject);
57+ procedure FormClose (Sender: TObject; var Action: TCloseAction);
5758 private
5859 { Private declarations }
5960 public
@@ -98,15 +99,28 @@ _Controller = record
9899
99100var
100101 Main: TMain;
102+ DriverPath: string;
103+ DllHandle: HMODULE;
104+ GetHMDData: function(out myHMD: THMD): DWORD; stdcall;
105+ GetControllersData: function(out myController, myController2: TController): DWORD; stdcall;
106+ SetControllerData: function (dwIndex: integer; MotorSpeed: dword): DWORD; stdcall;
107+ SetCentering: function (dwIndex: integer): DWORD; stdcall;
101108
102109implementation
103110
104111{ $R *.dfm}
105112
106- function GetHMDData (out myHMD: THMD): DWORD; stdcall; external ' TOVR.dll' name ' GetHMDData' ;
107- function GetControllersData (out myController, myContoller2: TController): DWORD; stdcall; external ' TOVR.dll' name ' GetControllersData' ;
108- function SetControllerData (dwIndex: integer; MotorSpeed: dword): DWORD; stdcall; external ' TOVR.dll' name ' SetControllerData' ;
109- function SetCentering (dwIndex: integer): DWORD; stdcall; external ' TOVR.dll' name ' SetCentering' ;
113+ procedure GetDriverPath ;
114+ var
115+ Reg: TRegistry;
116+ begin
117+ Reg:=TRegistry.Create;
118+ Reg.RootKey:=HKEY_CURRENT_USER;
119+ if Reg.OpenKey(' \Software\TrueOpenVR' , false) = false then Exit;
120+ if FileExists(Reg.ReadString(' Driver' )) = false then Exit;
121+ DriverPath:=Reg.ReadString(' Driver' );
122+ Reg.Free;
123+ end ;
110124
111125procedure TMain.GetBtnClick (Sender: TObject);
112126var
@@ -206,6 +220,15 @@ procedure TMain.FormCreate(Sender: TObject);
206220begin
207221 Label32.Caption:=' TOVR - Open Source Virtual Reality' + #13 #10 + ' standard for all devices' ;
208222 Application.Title:=Caption;
223+
224+ GetDriverPath;
225+ if FileExists(DriverPath) then begin
226+ DllHandle:=LoadLibrary(PChar(DriverPath));
227+ @GetHMDData:=GetProcAddress(DllHandle, ' GetHMDData' );
228+ @GetControllersData:=GetProcAddress(DllHandle, ' GetControllersData' );
229+ @SetControllerData:=GetProcAddress(DllHandle, ' SetControllerData' );
230+ @SetCentering:=GetProcAddress(DllHandle, ' SetCentering' );
231+ end ;
209232end ;
210233
211234procedure TMain.Button1Click (Sender: TObject);
@@ -221,4 +244,9 @@ procedure TMain.Button2Click(Sender: TObject);
221244 SetControllerData(IDController2, 42517 );
222245end ;
223246
247+ procedure TMain.FormClose (Sender: TObject; var Action: TCloseAction);
248+ begin
249+ FreeLibrary(DllHandle);
250+ end ;
251+
224252end .
0 commit comments