Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kontextmenü aller Dateitypen erweitern (https://www.delphipraxis.net/4478-kontextmenue-aller-dateitypen-erweitern.html)

OrallY 30. Apr 2003 19:22


Kontextmenü aller Dateitypen erweitern
 
Wie kann ich das Kontextmenü bei Klick auf eine Datei, unabhängig vom Dateityp, erweitern? So, wie es WinZIP macht oder viele Virenscanner?
Ich meine also nicht einen Kontextmenüeintrag für einen bestimmten Dateityp, der sich über die Registry verwirklichen lässt.

Christian Seehase 30. Apr 2003 23:48

Moin Orally,

dafür wirst Du Dir wohl einen ContextMenuHandler erstellen müssen.
Ich bin mir jetzt allerdings nicht sicher, ob es dazu schon Beispiele hier im Forum gibt.

Im PSKD ist es auf jeden Fall unter "Creating Context Menu Handlers" beschrieben.

Tom 1. Mai 2003 08:15

Oder unter HKEY_CLASSES_ROOT\*\Shell das gewünschte eintragen. Z.B. ...Shell\Open\Command. Der Eintrag gilt für alle Dateien, aber nicht für Ordner.

OrallY 1. Mai 2003 10:51

Der Eintrag bei '*' gilt allerdings auch nur für Dateitypen, die noch keinen anderen Openshell in der Registry haben.
Ich werde mir mal den Artikel im PSDK angucken, das scheint das zu sein, was ich suche. Ich bin gespannt ;).

OrallY 1. Mai 2003 10:57

Ich finde bei msdn.microsoft.com den Artikel "Creating Context Menu Handlers" nicht.

Vergesst es *g*! Bin noch nicht ganz ausgeschlafen ;).

Tom 1. Mai 2003 11:33

Zitat:

Zitat von OrallY
Der Eintrag bei '*' gilt allerdings auch nur für Dateitypen, die noch keinen anderen Openshell in der Registry haben.

RegEdit gestartet, kurz gebastelt: Funktioniert unter W2k einwandfrei. Es werden sowohl die * als auch die .XXX-Einträge ausgewertet.

OrallY 1. Mai 2003 14:33

@Tom Wie ich schon sagte, bei mir erschien es nur bei Datei die nicht schon einen Shellopencommand hatten.

Ok, ich hab mir jetzt mal den Artikel im PSDK angeguckt, doch richtig schlau werde ich nicht daraus. Könnte mir das vielleicht einer näher, vorallem Quelltextnäher, erklären, plz?

Christian Seehase 1. Mai 2003 15:04

Moin Orally,

zumindest bei D5 sind Demo Projekte Datei, unter anderem auch für die Erweiterung des Explorer Kontextmenüs.

Dieses wäre dann zu finden im Delphi Verzeichnis unter

Demos\Activex\Shellext\contmenu.dpr

schau Dir das doch mal an.

OrallY 2. Mai 2003 14:06

Jo, danke! Habe ich mittlerweile schon gefunden. Doch habe ich ein neues Problem. Ich versuche gerade einen Icon im Menü zu platzieren. Ich hab es mal mit folgendem Code probiert:
Delphi-Quellcode:

{$R Icons.res}
{inhalt: 10 ICON myicon.ico}
function TContextMenu.QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst,
          idCmdLast, uFlags: UINT): HResult;
var
  Mii: TMenuItemInfo;
begin
  Result := 0; // or use MakeResult(SEVERITY_SUCCESS, FACILITY_NULL, 0);

  if ((uFlags and $0000000F) = CMF_NORMAL) or
     ((uFlags and CMF_EXPLORE) <> 0) then begin
    // Add one menu item to context menu
    InsertMenu(Menu, indexMenu, MF_STRING or MF_BYPOSITION, idCmdFirst,
      'Blablub...');
    mii.cbSize := SizeOf(TMenuItemInfo);
    mii.fMask := MIIM_CHECKMARKS;
    mii.hbmpChecked := LoadIcon(hInstance, PChar('10'));
    mii.hbmpUnchecked := LoadIcon(hInstance, PChar('10'));
    SetMenuItemInfo(Menu, indexMenu, true, mii);
    SetMenuItemBitmaps(Menu, indexMenu, MF_BYPOSITION, mii.hbmpChecked, mii.hbmpUnchecked);
    // Return number of menu items added
    Result := 1; // or use MakeResult(SEVERITY_SUCCESS, FACILITY_NULL, 1)
  end;
end;
Was mache ich falsch?

Christian Seehase 2. Mai 2003 14:28

Moin Orally,

so aus dem Stand, ohne den Code näher zu analysieren:

Du musst auf jeden Fall

Delphi-Quellcode:
  LoadIcon(hInstance,PChar(10));
  // oder
  LoadIcon(hInstance,MAKEINTRESOURCE(10));
nehmen, da Du ja das Icon ja mit einer Integer ID und nicht mit einem Namen versehen hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Seite 1 von 2  1 2      

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