AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

USB-Stick abziehen nicht vergessen

Ein Thema von invalid_operation · begonnen am 13. Mär 2009 · letzter Beitrag vom 14. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
invalid_operation
(Gast)

n/a Beiträge
 
#1

USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 17:22
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:
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;
Funktioniert mit meinen USB-Sticks und SD-Karten, aber nicht mit externen USB-Festplatten
Getestet mit XP und Vista, Delphi5.

Beispiel in einem CanClose:
Delphi-Quellcode:

if ExeIsOnAnUSBStick then MessageBox(Handle,'Vergessen Sie bitte nicht, Ihren USB-Stick abzuziehen!','Hinweis',mb_Ok or mb_IconStop or mb_DefButton1);
CanClose := True;
Vielleicht hilft es ja jemandem / HTH
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 18:06
Ginge das theoretisch nicht auch in etwa so?
Delphi-Quellcode:
function ExeIsOnAnUSBStick: Boolean;
begin
  Result := GetDriveType(PChar(ParamStr(0)[1] + ':\')) = DRIVE_REMOVABLE;
end;
Außerdem meint das MSDN
Zitat:
To determine whether a drive is a USB-type drive, call SetupDiGetDeviceRegistryProperty and specify the SPDRP_REMOVAL_POLICY property.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
invalid_operation
(Gast)

n/a Beiträge
 
#3

Re: USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 18:40
Zitat von DeddyH:
Ginge das theoretisch nicht auch in etwa so?
Delphi-Quellcode:
function ExeIsOnAnUSBStick: Boolean;
begin
  Result := GetDriveType(PChar(ParamStr(0)[1] + ':\')) = DRIVE_REMOVABLE;
end;
Außerdem meint das MSDN
Zitat:
To determine whether a drive is a USB-type drive, call SetupDiGetDeviceRegistryProperty and specify the SPDRP_REMOVAL_POLICY property.
Vermutlich schon (keine Ahnung, ob es unter Delphi5 bereits geht)?

Hab's mit D5 geschrieben und unter XP und Vista getestet: Funktioniert!

Eventuell mögliche Optimierungen überlasse ich den geneigten Fachleuten (Dir)

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!
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#4

Re: USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 18:42
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.
Philipp F.
  Mit Zitat antworten Zitat
invalid_operation
(Gast)

n/a Beiträge
 
#5

Re: USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 18:56
Zitat von Flips:
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.
Welche "beiden" Versionen?

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"?
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#6

Re: USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 19:39
Zitat:
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!
Die Polemik gegen den flaschen Gebrauch von Floskeln und amerikanischem Deutsch "macht" "in etwa" soviel Sinn, wie "in 2009" über den höllisch warmen Sommer "in 1941" zu jammern. SCNR.

Zitat:
Was zum Teufel nochmal ist eine "CF-Karte"?
CompactFlash nennt u.a. die kleinen Speicherkarten in den digitalen Knipsen.

--
Andreas
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 20:20
Zitat von invalid_operation:
P.S.: "etwa" heißt sinngemäß "ungefähr"!
Und so war es auch gemeint. Trotzdem Danke für die Belehrung über den korrekten Gebrauch meiner Muttersprache
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
invalid_operation
(Gast)

n/a Beiträge
 
#8

Re: USB-Stick abziehen nicht vergessen

  Alt 13. Mär 2009, 21:10
@neo4a #6: Hast ja recht...
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#9

Re: USB-Stick abziehen nicht vergessen

  Alt 14. Mär 2009, 00:34
Zitat von invalid_operation:
Zitat von DeddyH:
Ginge das theoretisch nicht auch in etwa so?
[...]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!
Sogar die Duden-Sprachberatung benutzt "in etwa" - so falsch kanns also nicht sein
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
invalid_operation
(Gast)

n/a Beiträge
 
#10

Re: USB-Stick abziehen nicht vergessen

  Alt 14. Mär 2009, 02:49
Und der Letzte macht bitte das Licht aus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz