AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kontextmenü des Explorere ergänzen
Thema durchsuchen
Ansicht
Themen-Optionen

Kontextmenü des Explorere ergänzen

Ein Thema von Luckie · begonnen am 22. Mai 2004 · letzter Beitrag vom 7. Aug 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 14:07
Wo ist hier der Denkfehler:
Delphi-Quellcode:
{*------------------------------------------------------------------------------
  Explorer-Kontextmenü erweitern
-------------------------------------------------------------------------------}


function TExifReaderExt.QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst,
  idCmdLast, uflags: UINT): HResult;
resourcestring
  rsExifReader = 'ExifReader';
begin
  if ((uFlags and $0000000F) = CMF_NORMAL) or ((uFlags and CMF_EXPLORE) <> 0)
    then
  begin
    InsertMenu(Menu, indexMenu, MF_STRING or MF_BYPOSITION, idCmdFirst,
      PChar(rsExifReader));
    Result := 1;
  end
  else
    Result := 0;
end;
Das Registrieren funktioniert wunderbar, nur bekomme ich keinen Menüpunkt zu sehen.

Falls es nötig ist, hab eich mal die ganze Unit angehangen.
Angehängte Dateien
Dateityp: pas unit1_145.pas (4,4 KB, 18x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#12

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 14:23
Hast du mal probiert, das nicht unter ".jpg" sondern dem dazu gehörenden Schlüssel (bei mir "jpegfile") einzutragen? So habe ich´s bei meiner Shell-Extension für LNK-Dateien gemacht. Kann auch sein, dass es nicht daran liegt, denn so ausführlich habe ich mich damit auch noch nicht beschäftigt.

Aber ich glaube immer noch, dass du zu kompliziert denkst. Greif dir den Standardschlüssel des ".jpg"-Eintrags und ergänze dort unter "shell" den Eintrag für dein Programm. Das müsste normalerweise reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 14:32
Zitat von MathiasSimmack:
Hast du mal probiert, das nicht unter ".jpg" sondern dem dazu gehörenden Schlüssel (bei mir "jpegfile") einzutragen?
Gerade probiert, geht auch nicht.
Zitat:
Aber ich glaube immer noch, dass du zu kompliziert denkst. Greif dir den Standardschlüssel des ".jpg"-Eintrags und ergänze dort unter "shell" den Eintrag für dein Programm. Das müsste normalerweise reichen.
Das will ich ja machen, siehe Source:
Delphi-Quellcode:
procedure TExifReaderExtFactory.UpdateRegistry(Register: Boolean);
var
  ClassID: string;
begin
  if Register then
  begin
    inherited UpdateRegistry(Register);
    ClassID := GUIDToString(GUID_EXIFREADEREXT);
    CreateRegKey('.jpg\shellext', '', '');
    CreateRegKey('.jpg\shellext\ContextMenuHandlers', '', '');
    CreateRegKey('.jpg\shellext\ContextMenuHandlers\ExifReaderExt', '',
      ClassID);
  end
  else
  begin
    DeleteRegKey('.jpg\shellext');
    DeleteRegKey('.jpg\shellext\ContextMenuHandlers');
    DeleteRegKey('.jpg\shellext\ContextMenuHandlers\ExifReaderExt');
    inherited UpdateRegistry(Register);
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#14

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 14:34
Ändere ShellExt mal in ShellEx

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#15

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 14:52
Zitat von Luckie:
Das will ich ja machen, siehe Source
Ja, schon. Aber das ist doch zu umständlich. Ich meinte das anders -

Wenn du deinen selbst geschriebenen Texteditor als zusätzlichen Editor für Textdateien registrieren willst, dann baust du doch dafür auch keine Shell-Extension zusammen. Na ja, ich kann nur für mich sprechen ... ... Also ich würde die Registry öffnen und den Standardwert von ".txt" auslesen.
Das wäre bei mir "txtfile". Diesen Schlüssel öffne ich und ergänze dann unter "shell" die notwendigen Einträge für meinen Editor. So wie man das auch macht, wenn man seinen eigenen Dateityp registriert. Nur dass ich eben nicht "open" überschreibe, sondern meinen eigenen Schlüssel für meinen eigenen Editor anlege. Dadurch kann ich Textdateien nach wie vor mit Notepad öffnen, ich kann aber auch meinen Editor nehmen.

Das habe ich gemeint.

Und mal ehrlich: In deiner Shell-Extension passiert auch nichts weiter. Du rufst bloß "ShellExecute" zum Starten des Programms auf. Sorry (meine Meinung), aber da hättest du dir den Aufwand sparen können.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#16

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 15:00
Ui, und das hier:
Zitat von Luckie:
Delphi-Quellcode:
    DeleteRegKey('.jpg\shellext');
    DeleteRegKey('.jpg\shellext\ContextMenuHandlers');
scheint mir auch ziemlich gefährlich. Wenn sich noch ein Programm als Erweiterung für JPEGs einträgt, sind die damit IMHO auch fort.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 15:01
Also wenn du soll willst könnte ich mein Programm auch in das "Senden an"-Menü packen. Ich wollte es aber mal über das Kontextmenü probieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#18

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 15:04
Liegt das irgendwie an mir:
Habe ich dir was getan?
Mag mich keiner mehr?




Wenn du es mit dem von mir genannten Prinzip der Dateiendung machst, dann steckt es doch im Kontextmenü. Was denn noch? Sorry, aber ich muss mal diesen hier machen:

  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 15:09
Ich stehe irgendwie auf dem Schlauch.

Was soll ich in der Registry eintragen? Ginge das dann auch mit einer inf-Datei? Und wenn ja. Wie müsste diese aussehen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#20

Re: Kontextmenü des Explorere ergänzen

  Alt 22. Mai 2004, 15:15
Ich habe schon befürchtet, dass ich mit dir in Quellcode sprechen muss, damit du mich verstehst. Hier mal das Beispiel für Textdateien.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  reg : TRegistry;
  s : string;
begin
  reg := TRegistry.Create;
  if(reg <> nil) then
  try
    reg.RootKey := HKEY_CLASSES_ROOT;
    s := '';

    // womit ist der Typ ".txt" verknüpft?
    if(reg.OpenKey('.txt',false)) then
    try
      s := reg.ReadString('');
    finally
      reg.CloseKey;
    end;

    // so, gibt´s da was?
    if(s <> '') and
      (reg.KeyExists(s)) and
    // dann öffnen, ...
      (reg.OpenKey(s + '\shell\ProtonEdit\command',true)) then
    try
    // ... & Proton ergänzen
      reg.WriteString('','"c:\programme\powertoy\proton.exe" "%1"');
    finally
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
end;
Würdest du jetzt das Kontextmenü einer Textdatei aufrufen, dann siehst du nach wie vor die Einträge "Öffnen", "Drucken", usw. Aber ebenfalls dabei ist jetzt auch "ProtonEdit". Ist zwar kein schöner Begriff für´s Menü, aber es geht ja nur um die Idee.

Schönen Gruß an deine Freundin. Die soll dich nicht so hart ... äh ... ran nehmen ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 22:49 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