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.