Windows Kontext Menü Eintrag Hinzufügen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Windows Kontext Menü Eintrag Hinzufügen

Beitrag von X360 Andy »

Kurzer Code für das Eintragen einer Anwendung in das Windows Kontext Menü.

Code: Alles auswählen

EnableExplicit

Define StringBuffer$,ProgramName$,ProgramPath$
Define NewKey,KeyInfo 
; -- Unter Windows Vista und Windows 7 braucht der Code Administrator Rechte! 

; -- Name des Eintrags im Kontextmenü
ProgramName$ = "NotePad"

; -- Absoulten Pfad der Datei (geg. Parameter anhängen)
ProgramPath$ = "C:\Windows\System32\notepad.exe"

; -- Für Ordner Kontext Einträge statt "*" "Directory" Verwenden
If RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "*\shell\"+ProgramName$+"\command", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo) = #ERROR_SUCCESS
; -- "%1" Sendet den Pfad der Datei an das Programm als Parameter
    StringBuffer$ = ProgramPath$ + " %1" 
    RegSetValueEx_(NewKey, "", 0, #REG_SZ, StringBuffer$, Len(StringBuffer$) + 1)
    RegCloseKey_(NewKey)
EndIf

Als Procedure

Code: Alles auswählen

EnableExplicit

Define StringBuffer$, ProgramName$, ProgramPath$
Define NewKey, KeyInfo
; -- Unter Windows Vista und Windows 7 braucht der Code Administrator Rechte!

; -- Name des Eintrags im Kontextmenü
ProgramName$ = "NotePad"

; -- Absoulten Pfad der Datei (geg. Parameter anhängen)
ProgramPath$ = "C:\Windows\System32\notepad.exe"

; -- Für Ordner Kontext Einträge statt "*" "Directory" Verwenden
Procedure Set_Reg_Kontext_Value(ProgramName$, ProgramPath$)
  Protected NewKey, KeyInfo
  Protected StringBuffer$
  If RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "*\shell\" + ProgramName$ + "\command", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo) = #ERROR_SUCCESS
    ; -- "%1" Sendet den Pfad der Datei an das Programm als Parameter
    StringBuffer$ = ProgramPath$ + " %1"
    RegSetValueEx_(NewKey, "", 0, #REG_SZ, StringBuffer$, Len(StringBuffer$) + 1)
    RegCloseKey_(NewKey)
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf
EndProcedure

Debug Set_Reg_Kontext_Value(ProgramName$, ProgramPath$)


Zuletzt geändert von X360 Andy am 03.09.2009 19:33, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

:allright:

Prinzipiell sehr nützlicher Tipp, aber
ein f im Code zuviel!

Als Procedure wäre es etwas einfacher anzuwenden

>> ; -- Unter Windows Vista und Windows 7 braucht der Code Administrator Rechte!
Unter Windows 2000, XP usw. aber auch :wink:

Gruß

Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

ts-soft hat geschrieben::allright:
>> ; -- Unter Windows Vista und Windows 7 braucht der Code Administrator Rechte!
Unter Windows 2000, XP usw. aber auch :wink:
Naja ich bezog mich auf die UAC was ab Win Vista nachfragt.

Ich kenn das Rechte System unter Windwows Xp und kleiner leider zu schlecht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

> Ich kenn das Rechte System unter Windwows Xp und kleiner leider zu schlecht.
Die meisten XP User sind ja Administrator, das macht XP ja so unsicher.
Aber es gibt ja auch noch sicherheitsbewußte XP user und die haben keine
Adminrechte und der Code wird nicht funzen.

Mein Vorschlag wäre also eine Procedure, die auch die Adminrechte prüft,
um das ganze leicht wiederverwendbar zu machen :)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@X360 Andy
Bild
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten