Seite 1 von 1

Windows Kontext Menü Eintrag Hinzufügen

Verfasst: 03.09.2009 18:55
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$)



Verfasst: 03.09.2009 19:06
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

Verfasst: 03.09.2009 19:27
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.

Verfasst: 03.09.2009 19:34
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 :)

Verfasst: 03.09.2009 19:57
von RSBasic
@X360 Andy
Bild