Code: Select all
LControl & Enter::
Datei := Selection()
; Ermittelt die Einzelheiten der aktiven Datei:
SplitPath, Datei, DateiName, DateiDir, DateiExtension, DateiNameNoExt, DateiDrive
if DateiExtension in lnk ; Verknüpfung
FileGetShortcut, %Datei%, Datei
; Ermittelt noch einmal die Einzelheiten der gemeinten Datei:
SplitPath, Datei, DateiName, DateiDir, DateiExtension, DateiNameNoExt, DateiDrive
; Ungeeignete, bzw. beschränkt geeignete Dateiformate und Verzeichnisse:
if DateiExtension in url ; Ungeeignete Internetverknüpfung
Fehler = url
if DateiExtension in exe,bat,com ; Ungeeignete ausführbare Dateien
Fehler = exe-Datei
VerbotenDir := USERPROFILE . "\Desktop" ; Auf dem Desktop findet kein Backup statt.
if DateiDir in %VerbotenDir% ; Desktop etc.
Fehler = falsches Verzeichnis
FileGetAttrib, AttribVar, %Datei%
if AttribVar contains R, D ; Wenn Ordner oder ReadOnly
Fehler = Ordner oder schreibgeschützt
If StrLen(Fehler)>0
; Wenn Fehler:
{
MsgBox, 16, Öffnen mit Backup, Die Datei kann auf diesem Weg nicht geöffnet werden! `nFehler: %Fehler%, 3
Return
}
; Erstellt die Sicherungskopie:
SplitPath, Datei, DateiName, DateiDir, DateiExtension, DateiNameNoExt, DateiDrive
DateiNeu := DateiDir . "\" . DateiName . ".sik"
; Kopiert die Sicherungsdatei:
FileCopy, %Datei%, %DateiNeu%, 1 ; löscht eine ggf. schon vorhandene Sicherungsdatei und kopiert.
; Öffnet die Datei per "Edit" oder hilfsweise "Open"
Run, edit %Datei%,,UseErrorLevel ; öffnet mit dem Verb "Edit"
if (ErrorLevel="ERROR")
Run, open %Datei%,,UseErrorLevel ; öffnet mit dem Verb "Open" bzw. "Ausführen"
; Wenn Fehler beim Öffnen:
if (ErrorLevel="ERROR")
{
FileDelete, %DateiNeu% ; die eben erstellte Sicherungsdatei wird wieder gelöscht.
MsgBox, 16, Öffnen mit Backup, Die Datei kann auf diesem Weg nicht geöffnet werden! `nFehler: Keine bekannte Anwendung, 3
}
Return
; Ermittelt den aktuell markierten Text, die aktuell markierte Datei etc.:
Selection(OhneSichern = false, Warten = 5)
{
If NOT OhneSichern
AlterClipboardInhalt := ClipboardAll ; Sichern des Inhaltes von Clipboard
Clipboard =
Send ^c ; Kopiert die Markierung.
IF (Warten>0)
ClipWait, %Warten% ; Warte auf neuen Inhalt im Clipboard. 5 wg. Netzlaufwerken, die ggf. langsamer sind.
RückG := ClipBoard ; Speichern des Namens zur weiteren Verarbeitung
If NOT OhneSichern
ClipBoard := AlterClipboardInhalt ; Alten Inhalt des Clipboards wiederherstellen
Return RückG
}