![]() |
AW: Über alle USB Anschlüsse iterieren, um ein bestimmtes Gerät zu finden
Hallo,
in XE2 ist die Funktion wesentlich umfangreicher.
Delphi-Quellcode:
Weil's mir keine Ruhe gelassen hat, habe ich in der Zwischenzeit unter Win8 mit verschiedenen Usern und UAC-Einstellungen getestet, und keine Probleme feststellen können.
function DirectoryExists(const Directory: string; FollowLink: Boolean = True): Boolean;
{$IFDEF MSWINDOWS} var Code: Cardinal; Handle: THandle; LastError: Cardinal; begin Result := False; Code := GetFileAttributes(PChar(Directory)); if Code <> INVALID_FILE_ATTRIBUTES then begin if faSymLink and Code = 0 then Result := faDirectory and Code <> 0 else begin if FollowLink then begin Handle := CreateFile(PChar(Directory), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); if Handle <> INVALID_HANDLE_VALUE then begin CloseHandle(Handle); Result := faDirectory and Code <> 0; end; end else if faDirectory and Code <> 0 then Result := True else begin Handle := CreateFile(PChar(Directory), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); if Handle <> INVALID_HANDLE_VALUE then begin CloseHandle(Handle); Result := False; end else Result := True; end; end; end else begin LastError := GetLastError; Result := (LastError <> ERROR_FILE_NOT_FOUND) and (LastError <> ERROR_PATH_NOT_FOUND) and (LastError <> ERROR_INVALID_NAME) and (LastError <> ERROR_BAD_NETPATH); end; end; {$ENDIF MSWINDOWS} Wenn sich der Unterschied bewahrheiten sollte, wäre das ein klassisches Argument für den Wechsel auf eine aktuelle(re) Delphi-Version ???? |
AW: Über alle USB Anschlüsse iterieren, um ein bestimmtes Gerät zu finden
Ich habe den Grund jetzt gefunden:
Bei der Version FileDirExists reicht die Directory-Angabe, bei DirectoryExists muss noch der Laufwerksbuchstabe etc. vorangestellt werden.
Delphi-Quellcode:
Function FindGPS3: String;
var dirName: String; i : Integer; begin dirName:= 'F-Hathor'; //Dir, das sonst nirgendwo existiert ausser im GPS-Empfänger Result:='GPS-Empfänger NICHT gefunden.'; for i:=0 to 25 do begin if DriveExists(i) then if DirectoryExists(PChar(Chr(i + Ord('A')) + ':\')+dirName) then //geht nur so! begin Result:= 'GPS-Empfänger gefunden bei '+ PChar(Chr(i + Ord('A')) + ':\'); end; end; Form1.Label1.caption:=Result; end; |
AW: Über alle USB Anschlüsse iterieren, um ein bestimmtes Gerät zu finden
Sind wir wieder etwas schlauer :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz