WinFuture-Forum.de: Windows Explorer Kontext Menü erweitern - KOMPLEX! - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Windows Explorer Kontext Menü erweitern - KOMPLEX! Untermenüs und variable Einträge im Explorer-Menü


#1 Mitglied ist offline   insidewindows 

  • Gruppe: Mitglieder
  • Beiträge: 6
  • Beigetreten: 19. Februar 12
  • Reputation: 0

geschrieben 19. Februar 2012 - 17:56

Hallo liebe Community,

ich hoffe, ich bin hier richtig. Nachdem ich geraume Zeit an einer Software geschrieben habe, muss ich diese jetzt in das Windows-Explorer-Kontext-Menü (Was fürn Wort) integrieren. Doch auch nach der x-ten Lektüre schaffe ich das nicht. Ich möchte KEINE Dateizuordnung machen, sondern ein Untermenü hinzufügen, wie es 7-Zip tut. Dazu gab es auch schon Threads, keiner konnte mir wirklich helfen. Die Struktur soll folgendermaßen sein:
Kontext-Menü:
- Öffnen
+ DasProgramm
- A (Bei allen Dateien und Ordnern)
- B (Nur bei Dateien mit bestimmter Endung)
...
- Eigenschaften


Ich bin zuversichtlich, dass mir hier jemand weiterhelfen kann, also zu ändernde Registry-Schlüssel nennen und die Änderungen beschreiben kann.

Danke im Voraus für Eure Bemühungen und LG
0

Anzeige



#2 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.289
  • Beigetreten: 08. April 06
  • Reputation: 885
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 19. Februar 2012 - 21:25

Uff... pauschalisiert ist das kaum zu sagen da es immer drauf ankommt was du genau machen willst....

Zuersteinmal musst du einen Eintrag in den Shellex von "*" erstellen (beispiel Notepad++)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Notepad++64]
@="{B298D29A-A6ED-11DE-BA8C-A68E55D89593}"



du musst allerdings wie du siehst die CLSID des Programmes kennen denn da gehts gleich weiter.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}]
@="Notepad++64"

[HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}\InprocServer32]
@="C:\\Program Files (x86)\\Notepad++\\NppShell_04.dll"
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}\Settings]
"Title"="Edit with &Notepad++"
"Path"="C:\\Program Files (x86)\\Notepad++\\notepad++.exe"
"Custom"=""
"ShowIcon"=dword:00000001
"Dynamic"=dword:00000001
"Maxtext"=dword:00000019



diese Schritte werden dann nämlich ausgeführt wobei logischerweise "Title" der Wert ist welcher textuell im Kontextmenü steht.

War meines Wissens unter XP wesendlich einfacher so einen Eintrag zu erstellen (zumindest hab ich das noch so in Erinnerung) da du dort soweit ich mich erinner die Angaben nicht über die CLSID sondern direkt in den "*"-Schlüssel eintragen konntest...

Dieser Beitrag wurde von Stefan_der_held bearbeitet: 19. Februar 2012 - 21:34

0

#3 Mitglied ist offline   insidewindows 

  • Gruppe: Mitglieder
  • Beiträge: 6
  • Beigetreten: 19. Februar 12
  • Reputation: 0

geschrieben 20. Februar 2012 - 16:45

Vielen Dank für deine Mühe! Da besteht nur noch ein Problem: Ich habe ehrlich gesagt bisher keinerlei Ahnung von CLSIDs und dem Einbinden von DLLs ins System. Mein Programm besteht eigentlich nur aus vielen Daten und einer EXE-Datei, die je nach Menüpunkt mit unterschiedlichen Parametern aufgerufen werden soll. Beispielsweise bei Punkt A "C:\Program Files\MeinProgramm\programm.exe -a C:\Pfad\zur\gewählten\Datei".

Die Konfiguration soll letzendlich Inno Setup vornehmen.
Gibt es keine einfachere Möglichkeit in diese Richtung? Bloß dass die Punkte je nach Dateityp sichtbar werden?

Kleine Frage noch: Das @ steht für den Default-Wert, oder?

Mfg

Edit: Ich liebe schlaue Moderatoren (Mustela)

Dieser Beitrag wurde von insidewindows bearbeitet: 20. Februar 2012 - 19:05
Änderungsgrund: Fullquote entfernt

0

#4 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.289
  • Beigetreten: 08. April 06
  • Reputation: 885
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 20. Februar 2012 - 18:09

mit dem "@" (also at) verweißt du auf die CLSID :wink: also "*" nach Notepad++ in diesem Fall.

Du kannst schauen (ohne gewähr) ob du auch noch die Werte direkt in den "*" Schlüssel eintragen kannst. Da weiß ich aber nicht, wie NT6.x darauf reagiert. bei NT5.x hat es mal funktioniert(musst natürlich in der Registry die Schlüssel/Ordnerhirachie berücksichtigen).
0

#5 Mitglied ist offline   insidewindows 

  • Gruppe: Mitglieder
  • Beiträge: 6
  • Beigetreten: 19. Februar 12
  • Reputation: 0

  geschrieben 20. Februar 2012 - 19:08

[HKEY_CLASSES_ROOT\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593}\
InprocServer32]
@="C:\\Program Files (x86)\\Notepad++\\NppShell_04.dll"
"ThreadingModel"="Apartment"



Kannst du mir sagen, was ich hiermit machen soll? Oder wie ich CSLIDs sonst zuweise?

Und trotz deiner Erklärungen habe ich immer noch keine Ahnung wie ich Einträge ins Untermenü eintrage.

Dennoch LG und Vielen Dank!
0

#6 Mitglied ist offline   metinc 

  • Gruppe: Mitglieder
  • Beiträge: 1
  • Beigetreten: 05. März 12
  • Reputation: 0

geschrieben 05. März 2012 - 14:58

InprocServer32 ist irgendein service oder Programm, welches Treiber (*.dll) handeln.

Vielleicht ist schon dein Programm mit einer CLSID in der Registry automatisch eingefügt, such doch mal nach der Datei "deinprogramm.exe" in der Suche der Registry. Studiere die einzelnen Registryeinträge...

Dieser Beitrag wurde von metinc bearbeitet: 05. März 2012 - 15:01

0

#7 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 12. März 2012 - 15:53

Muss es kaskadiert sein, oder kann der Eintrag normal im Kontextmenü erscheinen? Für den zweiten Fall braucht überhaupt keine CLSIDs, man ruft einfach nur deine EXE mit nem Parameter auf und gut is.
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0