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 Aktion auswählen Dialog beim einlegen eines Datenträgerns (https://www.delphipraxis.net/79826-aktion-auswaehlen-dialog-beim-einlegen-eines-datentraegerns.html)

Van HelF 29. Okt 2006 12:58


Aktion auswählen Dialog beim einlegen eines Datenträgerns
 
Hallo,
wenn man normalerweise z.b. eine cd in ein lauferk einlegt, erscheint ein windows dialog, in dem man auswählen kann, was man gerne machen möchte (z.b. cd mit mediaplayer wiedergeben, cd mit alcohol kopieren ,...),
kann ich ein eigenes programm auch in diese liste eintragen ?

Van HelF 1. Nov 2006 09:21

Re: Aktion auswählen Dialog beim einlegen eines Datenträgern
 
Gibt es vl. einen registry eintrag dazu ?

FeindFunker 1. Nov 2006 10:01

Re: Aktion auswählen Dialog beim einlegen eines Datenträgern
 
Bei Google suchenautoplay v2
Viel Spaß

Van HelF 1. Nov 2006 12:46

Re: Aktion auswählen Dialog beim einlegen eines Datenträgern
 
vielen dank

Die Lösung :

Die Programme befinden sich hier :

HKEY_LOCAL_MACHINE\
Software\
Microsoft\
Windows\
CurrentVersion\
Explorer\
AutoplayHandlers\
Handlers

Van HelF 1. Nov 2006 17:49

Re: Aktion auswählen Dialog beim einlegen eines Datenträgern
 
hatte mich leider etwas zu früh gefreut, ich habe mit folgendem code die einträge erstellt, jedoch passiert nichts :-(

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var d:Tregistry;
begin
    d:=TRegistry.Create;
    d.RootKey:=HKey_Local_Machine;
    if d.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers',false)=true then
    begin
      d.CreateKey('Index Of');
      if d.OpenKey('Index Of',false)=true then
      begin
        d.WriteString('Action','Datenträger Indexieren');
        d.WriteString('DefaultIcon','C:\Programme\Index Of\Index Of.exe');
        d.WriteString('Provider','Index Of');
      end;
    end;
    d.Free;
end;
Erklärung zu Autoplay v2

FeindFunker 2. Nov 2006 09:21

Re: Aktion auswählen Dialog beim einlegen eines Datenträgern
 
Es reicht nicht aus einfach so irgenntwo en Handler zu erstellen.
Guck dir mal die Struktur in dem genannten Registry Pfad genauer an.

Unter DeviceHandlers kannst du ContentTypeSniffer sowie Events für bestimmte Medien festlegen.
Unter ContentTypeSniffers kannst du Sniffer für bestimmte Dateitypen anlegen. Diese wiederum lösen dann entsprechende Events aus, für die du Handler eintragen kannst.
Siehe dir dazu zum Beispiel mal den "MusicFilesContentSniffer" an.
Findet sich auf einem Datenträger min. eine Datei vom Typ in RelPattern ( hier :
Code:
*.wma
HIFI\*\*.wma
*.mp3
HIFI\*\*.mp3
*.mp4
) dann soll der ContentTypeHandler MusicFilesContentHandler aufgerufen werden.
Im Verzeichnis ContentTypeHandlers ist dieser definiert.
Diese ContentHandler lösen wiederum Events in EventHandlers aus, die dann einen Handler aus Handlers aufrufen. Fertig :-D Wenn du Nero oder sowas installiert hast schau dir mal deren Einträge an, wird sehr gut ersichtlich daran.

Ich hoffe ich habe dich nicht komplett verwirrt :wiejetzt: ;)

Van HelF 2. Nov 2006 15:13

Re: Aktion auswählen Dialog beim einlegen eines Datenträgern
 
Wenn ich mir z.b. den eintrag "MusicFilesContentSniffer" in "ContentTypeSniffers" ansehe, dann kann ich noch nachvollziehen, dass dadurch
Delphi-Quellcode:
ContentTypeHandler           MusicFilesContentHander
ein entprechedender eintrag in "ContentTypeHandlers" aufgerufen wird.
hier also "MusicFilesContentHandler", nur weiss ich jetzt nicht wie ich diesen mit einem "Handers" verknüpfen kann ?


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