Re: Kontextmenü des Explorere ergänzen
Liste der Anhänge anzeigen (Anzahl: 1)
Wo ist hier der Denkfehler:
Delphi-Quellcode:
Das Registrieren funktioniert wunderbar, nur bekomme ich keinen Menüpunkt zu sehen.
{*------------------------------------------------------------------------------
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; Falls es nötig ist, hab eich mal die ganze Unit angehangen. |
Re: Kontextmenü des Explorere ergänzen
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. |
Re: Kontextmenü des Explorere ergänzen
Zitat:
Zitat:
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; |
Re: Kontextmenü des Explorere ergänzen
Ändere ShellExt mal in ShellEx ;)
...:cat:... |
Re: Kontextmenü des Explorere ergänzen
Zitat:
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. :stupid: |
Re: Kontextmenü des Explorere ergänzen
Ui, und das hier:
Zitat:
|
Re: Kontextmenü des Explorere ergänzen
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.
|
Re: Kontextmenü des Explorere ergänzen
Liegt das irgendwie an mir: :cry:
Habe ich dir was getan? Mag mich keiner mehr? :mrgreen: 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: :wall: :zwinker: |
Re: Kontextmenü des Explorere ergänzen
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? |
Re: Kontextmenü des Explorere ergänzen
Ich habe schon befürchtet, dass ich mit dir in Quellcode sprechen muss, damit du mich verstehst. :mrgreen: Hier mal das Beispiel für Textdateien.
Delphi-Quellcode:
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.
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; Schönen Gruß an deine Freundin. Die soll dich nicht so hart ... äh ... ran nehmen ... ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 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