![]() |
USB-Stick abziehen nicht vergessen
Falls ein Programm von einem USB-Stick gestartet wurde und beim Herunterfahren von Windows im CanClose einen Hinweis ausspucken soll, daß man den Stick noch nicht abgezogen hat:
Delphi-Quellcode:
Funktioniert mit meinen USB-Sticks und SD-Karten, aber nicht mit externen USB-Festplatten :-)
function ExeIsOnAnUSBStick: Boolean;
var HomeDrive: string; DriveLetters: string; procedure List_Drives; const DRIVE_UNKNOWN = 0; DRIVE_NO_ROOT_DIR = 1; DRIVE_REMOVABLE = 2; DRIVE_FIXED = 3; DRIVE_REMOTE = 4; DRIVE_CDROM = 5; DRIVE_RAMDISK = 6; var r: LongWord; Drives: array[0..128] of char; pDrive: PChar; begin r := GetLogicalDriveStrings(SizeOf(Drives), Drives); if r = 0 then Exit; if r > SizeOf(Drives) then raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY)); pDrive := Drives; while pDrive^ <> #0 do begin if GetDriveType(pDrive) = DRIVE_REMOVABLE then DriveLetters := DriveLetters + (pDrive); Inc(pDrive, 4); end; end; begin HomeDrive := AnsiUpperCase(paramstr(0)[1]); List_Drives; DriveLetters := AnsiUpperCase(DriveLetters); Result := (pos(HomeDrive, DriveLetters) > 0); end; Getestet mit XP und Vista, Delphi5. Beispiel in einem CanClose:
Delphi-Quellcode:
Vielleicht hilft es ja jemandem / HTH :wink:if ExeIsOnAnUSBStick then MessageBox(Handle,'Vergessen Sie bitte nicht, Ihren USB-Stick abzuziehen!','Hinweis',mb_Ok or mb_IconStop or mb_DefButton1); CanClose := True; |
Re: USB-Stick abziehen nicht vergessen
Ginge das theoretisch nicht auch in etwa so?
Delphi-Quellcode:
Außerdem meint das
function ExeIsOnAnUSBStick: Boolean;
begin Result := GetDriveType(PChar(ParamStr(0)[1] + ':\')) = DRIVE_REMOVABLE; end; ![]() Zitat:
|
Re: USB-Stick abziehen nicht vergessen
Zitat:
Hab's mit D5 geschrieben und unter XP und Vista getestet: Funktioniert! Eventuell mögliche Optimierungen überlasse ich den geneigten Fachleuten (Dir) :oops: LG / HTH P.S.: "etwa" heißt sinngemäß "ungefähr"! Du benutzt oben "in etwa" falsch! In etwa 95% aller Fälle wird "in etwa" falsch benutzt! Dein "in" bei "in etwa" klingt gut/modisch, ist aber FALSCH! |
Re: USB-Stick abziehen nicht vergessen
Ich hab es mal spontan getestet,
auf einem USB-Stick melden sich beide Versionen, ebenso auf einer CF-Karte. Auf einer externen LAN-Festplatte meldet sich nur die Version von invalid_operation. |
Re: USB-Stick abziehen nicht vergessen
Zitat:
Seit wann ist eine externe LAN-Festplatte auf einem USB-Stick? Kann das hier (mangels Deiner Hardware) nicht testen, aber der Source ist wohl oben... LG / HTH Edit: Was zum Teufel nochmal ist eine "CF-Karte"? |
Re: USB-Stick abziehen nicht vergessen
Zitat:
Zitat:
-- Andreas |
Re: USB-Stick abziehen nicht vergessen
Zitat:
|
Re: USB-Stick abziehen nicht vergessen
@neo4a #6: Hast ja recht... :oops:
|
Re: USB-Stick abziehen nicht vergessen
Zitat:
|
Re: USB-Stick abziehen nicht vergessen
Und der Letzte macht bitte das Licht aus :twisted:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 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