Notepad ++ / Schreibschutz

  • Hallo Zusammen,

    hier mal eine nicht AutoIt Frage, welche aber sicher auch einige von Euch interessieren und vielleicht ja auch beantworten können.

    Ich nutze Notepad++ auch sehr viel zu Dokuzwecken und ist quasi immer mit auf dem Rechner zum lesen geöffnet. Wenn ich wichtige Datei öffne setze ich meist unter dem Menüpunkt "Bearbeiten" den Schreibschutz.

    Wenn ich jetzt aber Notepad++ schließe und wieder öffne, ist der Schreibschutz für die Datei aber wieder raus... Kann man das irgendwie ändern?

    Gut wäre auch, wenn alle Dateien generell "Schreibgeschützt" in Notepad++ geöffnet werden, und man manuell den Harken unter "Bearbeiten" "Schreibschutz" raus nehmen kann, wenn man mal was ändern will...

    Kennt Ihr das Problem oder hat jemand eine Lösung?

    Viele Grüße

  • Hallo

    Habe das gerade mal angeschaut. In Notepad++ kann man anscheinend in den Einstellungen das nirgends als Default hinterlegen.

    Folfgende Optionen bieten sich jedoch an:

    • Mit der Kommandozeilen Option -ro kannst du angeben das File schreibtgeschützt zu öffnen. Beispiel: notepad++.exe -ro filename.txt
    • Falls du Dateien über das Kontextmenü öffnen solltest (Rechtsklick -> Edit with Notepad++), kann man in der Registry den Befehl so hinterlegen, dass dieser automatisch die Option -ro mit angibt. Folgender Wert in der Registry müsste dafür angepasst werden.
      Unter: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{B298D29A-A6ED-11DE-BA8C-A68E55D89593} den Wert des Schlüssels Path ändern
      Standartwert: C:\Program Files (x86)\Notepad++\notepad++.exe
      Anpassen zu: C:\Program Files (x86)\Notepad++\notepad++.exe" "-ro

    Gruss,
    Kaioshin

  • Hallo.

    Die Ideen von Kaioshin finde ich gut und funktionieren wunderbar! Danke dafür!

    Ich habe mir jetzt auch einfach eine Batchdatei geschrieben, in der meine DokuDateien Schreibgeschützt geöffnet werden...
    Leider geht dabei meine Formatierung flöten, welche ich per "Eigene Sprachen" definiert habe...
    die Kommandoerweiterung "-l" geht wohl nur für vordefinierte Sprachen...

    Oder hat jemand dazu auch noch eine Idee?

    Gruss rollod

  • Mich hat das ganze interessiert, weshalb ich nen kleines script dafür gebastelt habe :)
    Man startet Notepad mit dem Programm von mir. Es wird ne transparente gui über das notepad gelegt und die wird ausgeblendet, wenn auf den edit-button geklickt wird.
    Hier das Script:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $prog=Run("C:\Program Files (x86)\Notepad++\notepad++.exe")
    $state=false
    sleep(1000)
    $title=ProcessGetWindows($prog)
    ;_arrayDisplay($title)
    $handle=$title[0][1]
    $ar=ControlGetPos($handle,"",0)
    $Gui=GUICreate("",$ar[2]-20,$ar[3],$ar[0],$ar[1],bitor($WS_POPUP,$WS_CHILD),$WS_EX_MDICHILD,$handle)
    WinSetTrans($Gui,"",1)
    GUISetState()
    WinActivate($Gui)
    $Gui2=GUICreate("",25,20,$ar[0]-7,$ar[1]-25,bitor($WS_POPUP,$WS_CHILD),$WS_EX_MDICHILD,$handle)
    $Button=GUICtrlCreateButton("Edit",0,0,-1,20)
    GUISetState()
    while WinExists($handle)
    $msg=GUIGetMsg()
    if $msg=$Button then
    if NOT $state then
    GUICtrlSetData($Button,"!Edit")
    GUISetState(@SW_HIDE,$Gui)
    $state=true
    else
    GUICtrlSetData($Button,"Edit")
    GUISetState(@SW_SHOW,$Gui)
    WinActivate($Gui)
    GUISetState(@SW_SHOW,$Gui2)
    $state=false
    endif
    endif
    sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Description: Lists all Windows of a process
    ; Return Value: Returns an Array like WinList, if error, @error is set to 1, but Still an empty Array is returned.
    ;Author: AspirinJunkie, modified by Prog@ndy
    Func ProcessGetWindows($PId)
    $PId = ProcessExists($PId)
    If $PId = 0 Then
    SetError(1)
    Else
    Local $WinList = WinList()
    Local $WindowTitle[1][2]
    Local $x = 0
    For $i = 1 To $WinList[0][0]
    If WinGetProcess($WinList[$i][1], "") = $PId And $WinList[$i][0] <> "" Then
    ReDim $WindowTitle[$x+1][2]
    $WindowTitle[$x][0] = $WinList[$i][0]
    $WindowTitle[$x][1] = $WinList[$i][1]
    $x += 1
    EndIf
    Next
    Return $WindowTitle
    EndIf
    EndFunc ;==>ProcessGetWindow

    [/autoit]

    Das Programm beendet sich, wenn notepad geschlossen wird :)
    Für rechtsklick->Edit with notepad könnte man dann das programm in der registry auf meines ändern und dann kommandozeilen eingaben abfragen und dann an notepad weitergeben :)