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$)