Hoi,
ich spiele grad mit der TUSBDeviceTree-Komponente aus der SetupAPI von
JEDI rum, um in unserer Anwendung eine elegantere Methode zur Erkennung unserer Hardware einzubauen.
Nun ist es mir bei der Demo der Kompo und auch in der eigenen Anwendung gestern 2-3x reproduzierbar passiert, dass das USB-System von meinem Vista Lappi garnicht mehr wollte. Soll heissen: Er hat dann garnichts mehr gemacht, wenn ich Hardware (selbst meinen USB-Stick) reingesteckt oder rausgezogen hab und Fenster- oder Menüinhalte wurde teilweise nicht mehr gezeichnet. Mußte jedesmal das System neu starten. Auf meinem XP Rechner hier konnte ich das bisher nicht nachvollziehen.
Hat jemand das auch? Oder kann hierzu was sagen?
Delphi-Quellcode:
procedure TRadionicMainContainerForm.Button1Click(Sender: TObject);
function ScanDeviceTree (Dev: TUSBDevice): Boolean;
var
I: Integer;
Node: TTreeNode;
begin
Result := FALSE;
if Dev <> nil then
begin
if Dev.IsHub then
for I := 0 to Dev.Count - 1 do
begin
Result := ScanDeviceTree (Dev.Devices[I]);
if Result then
Exit;
end
else begin
if Pos (Dev.DeviceDescription, 'Light Quantum Resonator USB') = 1 then
begin
Result := TRUE;
Exit;
end;
end;
end;
end;
var
s: String;
a: Integer;
Found: Boolean;
USBHostCtrl: TUSBHostController;
begin
for a := 0 to USBDeviceTree1.Count - 1 do
begin
USBHostCtrl := USBDeviceTree1.HostControllers[a];
Found := ScanDeviceTree(USBHostCtrl.RootHub);
end;
if Found then
ShowMessage ('OK')
else ShowMessage ('No');
end;
procedure TRadionicMainContainerForm.USBDeviceTree1DeviceChange(
Sender: TObject);
begin
Button1Click (Self);
end;