Ich denke, ich habe eine Proof-of-Concept-Lösung gefunden, die jedoch etwas kompliziert ist und (derzeit) einen Absturz in Notepad ++ verursacht. Sie ist also wahrscheinlich noch nicht realisierbar. Ich dachte, ich würde es trotzdem posten, da andere vielleicht ähnliche Probleme lösen.
Das Beta-Plugin Notepad ++ Python Script fügt Unterstützung für die Skripterstellung in Notepad ++ hinzu, einschließlich des Einbaus in vorhandene Notepad ++ - Benachrichtigungen. Das Plugin enthält ein Startskript, das immer ausgeführt wird, solange in den Konfigurationsoptionen des Plugins "ATSTARTUP" ausgewählt ist.
- Starten Sie eine Batchdatei aus dem alten Tool (diese kann beim Start minimiert werden).
- Ändern Sie den Befehlsfenstertitel in etwas, das von Notepad ++ bekannt und eindeutig ist (der Dateiname wird dies wahrscheinlich tun), damit er später abgebrochen werden kann
- Starten Sie Notepad ++ aus der Stapeldatei mit der Datei als Befehlszeilenargument
- Registrieren Sie beim Start automatisch eine Python-Funktion als Rückruf in der FILEBEFORECLOSE-Benachrichtigung
- Wenn eine Datei geschlossen wird, verwenden Sie den Dateinamen, um den Fenstertitel der Eingabeaufforderung zu rekonstruieren, und verwenden Sie diesen, um die Datei zu beenden.
Dadurch wird das Befehlsfenster erfolgreich geschlossen, Notepad ++ wird jedoch gesperrt. Ich denke, das ist ein Problem mit dem Python-Plugin. Es scheint, dass der Aufruf von console.run () von einem Benachrichtigungsrückruf aus Probleme verursacht. Ich weiß, dass der Befehl gut formatiert ist, da er ohne Absturz ausgeführt wird, wenn er von einem vom Benutzer ausgelösten Skript ausgeführt wird. Dieses Skript wird jedes Mal ausgeführt, wenn eine Datei geschlossen wird, wodurch Notepad ++ hängen bleibt. Ich empfehle Ihnen daher nicht, diese Lösung in ihrem aktuellen Status zu verwenden
Befehl zum Ausführen des alten Tools:
start /min nppblock.bat
notepadpp_blocker.bat:
@echo off FOR %%i IN (%1) DO ( set filename=%~nx1 ) title=nppblock_%filename% echo Waiting for %filename% to be closed in Notepad++ "C:\Program Files (x86)\Notepad++\notepad++.exe" %1 pause
Zu C: \ Programme (x86) \ Notepad ++ \ plugins \ PythonScript \ scripts \ startup.py hinzugefügt:
import os.path def fileBeforeCloseCallback(args): filename = os.path.basename(notepad.getBufferFilename(args["bufferID"])); killcmd = 'taskkill /f /fi "WINDOWTITLE eq nppblock_' + filename + '" /im cmd.exe' console.run(killcmd) notepad.callback(fileBeforeCloseCallback, [NOTIFICATION.FILEBEFORECLOSE])