Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: "Datenträgerdialog" & Bilder von Datenträg

  Alt 17. Apr 2007, 23:55
Zitat von EConvertError:
Hallo!

Ich möchte mein Programm gerne in dem im Anhang zu findenen Dialog eintragen. Dieser Dialog erscheint ja immer, wenn man einen Datenträger, wie z.B. USB-Stick od. Kamera (für mich wichtig anschließt).

Natürlich möchte ich mich nicht nur eintragen, sondern mein Programm soll beim Anwählen auch gestartet werden.
Moin,

soweit habe ich es zumindest bei mir geschafft, dass bei Bildern mein Programm angezeigt wird und auch gestartet werden kann.
Delphi-Quellcode:
uses
  Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
   Reg : TRegistry;
   ProgPfad: AnsiString;
begin
  ProgPfad:= 'C:\Project1.exe';
  Reg:= TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\ShowPicturesOnArrival\', true) then
    begin
      Reg.WriteString('MBMyBild','');
      Reg.CloseKey;
    end;

    if Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\MBMyBild\', true) then
    begin
    Reg.WriteString('Action','Mein Bild öffnen');
    Reg.WriteString('DefaultIcon',ProgPfad+',0');
    Reg.WriteString('InvokeProgID','My.Bilder');
    Reg.WriteString('InvokeVerb','ShowMyBild');
    Reg.WriteString('Provider','Bild Test');
    Reg.CloseKey;
    end;

    Reg.RootKey := HKEY_CLASSES_ROOT;
    if Reg.OpenKey('\CLSID\{51BD566E-A02D-4387-9A82-D929EA8C20B1}\LocalServer32\', true) then
    begin
      Reg.WriteString('', ProgPfad);
      Reg.CloseKey;
    end;

    if Reg.OpenKey('\CLSID\{51BD566E-A02D-4387-9A82-D929EA8C20B1}\ProgID\', true) then
    begin
      Reg.WriteString('','My.Bilder');
      Reg.CloseKey;
    end;

    if Reg.OpenKey('\My.Bilder\', true) then
    begin
      Reg.WriteString('','My.Bilder');
      Reg.CloseKey;
    end;

    if Reg.OpenKey('\My.Bilder\CLSID\', true) then
    begin
      Reg.WriteString('','{51BD566E-A02D-4387-9A82-D929EA8C20B1}');
      Reg.CloseKey;
    end;

    if Reg.OpenKey('\My.Bilder\Shell\ShowMyBild\DropTarget', true) then
    begin
      Reg.WriteString('CLSID','{51BD566E-A02D-4387-9A82-D929EA8C20B1}');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
   Reg : TRegistry;
begin
  Reg:= TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;

    if Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\ShowPicturesOnArrival\', false) then
    begin
      Reg.DeleteValue('MBMyBild');
      Reg.CloseKey;
    end;

    if Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\', false) then
    begin
      if reg.KeyExists('MBMyBild') then
        Reg.DeleteKey('MBMyBild');
       Reg.CloseKey;
    end;

    Reg.RootKey := HKEY_CLASSES_ROOT;
    if Reg.OpenKey('\CLSID\', false) then
    begin
      if reg.KeyExists('{51BD566E-A02D-4387-9A82-D929EA8C20B1}') then
        Reg.DeleteKey('{51BD566E-A02D-4387-9A82-D929EA8C20B1}');
      Reg.CloseKey;
    end;

    if reg.KeyExists('\My.Bilder\') then
      Reg.DeleteKey('\My.Bilder\');
  finally
    Reg.Free;
  end;
end;
Getestet mit WinXP SP1.

Du kannst dich ja auch selber noch mit der Registry beschäftigen. Unter dem Schlüssel 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explore r\AutoplayHandlers\EventHandlers' konnte man auch noch andere Sachen wie Bilder eintragen.

Ich habe eben gerade nach den Suchbegriff ShowPicturesOnArrival gesucht, eventuell kommst du damit noch weiter.
Miniaturansicht angehängter Grafiken
aktion_165.jpg  
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat