Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi USB Stick Erkennen -- DP Suche wurde bemüht dennoch Hilfe n. (https://www.delphipraxis.net/101403-usb-stick-erkennen-dp-suche-wurde-bemueht-dennoch-hilfe-n.html)

hedie 12. Okt 2007 14:52


USB Stick Erkennen -- DP Suche wurde bemüht dennoch Hilfe n.
 
Hallo

Ich möchte einen USB Stick in meinem Fall ein USB MP3 Player wie zb den IPOD (Ich weiss verschlüsselt :( )
erkennen wen dieser Angeschlossen wird.

Dazu habe ich mal die Suche bemüht und dies Gefunden

Delphi-Quellcode:
procedure TFenster.WMDeviceChange(var Msg: TMessage);
type PDevBroadcastHdr = ^TDevBroadcastHdr;
TDevBroadcastHdr = packed record
dbcd_size, dbcd_devicetype, dbcd_reserved: DWORD; end;
type PDevBroadcastVolume = ^TDevBroadcastVolume;
TDevBroadcastVolume = packed record
dbcv_size, dbcv_devicetype, dbcv_reserved, dbcv_unitmask: DWORD;
dbcv_flags: Word; end;
function GetDrive(pDBVol: PDevBroadcastVolume): string;
var i: Byte; Maske: DWORD;
begin
if (pDBVol^.dbcv_flags and $0001) = $0001 then
begin
Maske := pDBVol^.dbcv_unitmask;
for i := 0 to 25 do
begin
  if (Maske and 1) = 1 then
  Result := Char(i + Ord('A')) + ': ';
  Maske := Maske shr 1;
end;
end;
end;
var Drive: String;
begin
case Msg.wParam of
$8000:
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
   Pan('Datenträger in Laufwerk '+GetDrive(PDevBroadcastVolume(Msg.lParam))+'eingelegt');
$8004:
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
  begin
   Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
   Pan('Datenträger aus Laufwerk '+Drive+'entfernt');
   if not(Drive = '') and (Drive[1] = ExtractFilePath(ParamStr(0))[1]) then Close;
  end;
end;
end;
Dieser Code Funktioniert beim einlegen einer CD Sehr gut jedoch wird beim anschliessen des IPOD nur Datenträger in Lauferk Eingelegt
angezeigt also ohne Laufwerkbuchstaben obwohl kurzdarauf bei mir ein Explorer Fenster aufgeht mit Entsprechendem IPOD Inhalt

Ich hoffe auf hilfe :D

Danke

f.siebler 12. Okt 2007 16:07

Re: USB Stick Erkennen -- DP Suche wurde bemüht dennoch Hilf
 
hä? irgendwie verstehe ich die Problematik nicht wirklich.
Was ist mit der CD? Was passiert mit einem normale USB Stick? Vll. kannst du es noch etwas genauer beschreiben... ?

hedie 12. Okt 2007 16:11

Re: USB Stick Erkennen -- DP Suche wurde bemüht dennoch Hilf
 
Ok

Also ich möchte, beim anschluss eines USB Stick wie ja auch ein USB MP3Player einer ist
dessen Laufwerkbuchstaben erhalten

Mit dem oben geposteten Code bekomme ich nur den Laufwerkbuchstaben meines DVD Laufwerk beim einlegen und herausnehmen einer CD

Wenn ich einen STICK (In meinem fall IPOD hab grad keinen USB Stick) anschliesse dan bekomme ich zwar die Meldung das etwas angeschlossen ist (Von diesem code) jedoch wird der Laufwerkbuchstabe nicht angezeigt.

Windows erkennt den IPOD Jedoch als Wechseldatenträger, das erkenne ich da kurz nach anschliessen sich ein Explorer Fenster öffnet

f.siebler 16. Okt 2007 12:50

Re: USB Stick Erkennen -- DP Suche wurde bemüht dennoch Hilf
 
beim ipod ist es möglich dieses in itunes zu aktiveren...
ansonsten wirst du dich wohl etwas genauer mit hid befassen müssen :-(


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 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