Doppelklick-Aktion für Dateitypen und Ordner ändern

Forum zur Erstellung von Anwendungen der erweiterten Scripting-Funktion
Info: Diese Schalter und Script-Anwendungen funktionieren erst ab der Version 11
Antworten
Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von Kundal » 22. Mär 2014 16:10

Dieses Script-AddIn basiert auf dem schlichten Schalter aus dem Beitrag Texteditor bei Doppelklick auswählen (Dialog), erweitert die Möglichkeiten aber dramatisch.

Das Script erstellt den neuen Skriptbefehl ToggleDoubleclickAction, der es ermöglicht, für diverse konfigurierbare Dateitypen und/oder für Ordner die bei Doppelklick ausgeführte Aktion temporär zu ändern, ohne dies unter Einstellungen=>Dateitypen vornehmen zu müssen.
Es stehen 5 konfigurierbare Dateityp-Gruppen (A_Dateitypen bis E_Dateitypen) mit einer zugeordneten alternativen Aktion zur Verfügung (i.d.R. ein Pfad zur ausführbaren Datei einer Anwendung; A_Aktion bis E_Aktion). Außerdem kann die Aktion bei Doppelklick auf einen Ordner (Go-Befehl mit beliebigen Argumenten) konfiguriert werden. Vor der ersten Verwendung muss mindestens eine der Gruppen konfiguriert werden, da das Script sonst wirkungslos bleibt.

Konfiguration der Dateitypgruppen und ihrer Aktionen
Beispiel: Die ausführbaren Dateitypen .reg, .vbs, .js, .bat, .cmd so konfigurieren, dass sie bei aktiviertem Zustand nicht gestartet, sondern zur Bearbeitung in Notepad geöffnet werden.

Nachdem das Script wie unter Was ist ein Script-AddIn? beschrieben installiert wurde, gehe nach Einstellungen=>Voreinstellungen=>Symbolleisten=>Skripts und markiere den Eintrag ToggleDoubleclickAction. Klicke jetzt auf den Button Konfigurieren und trage für den Wert von A_Dateitypen den String .reg .vbs .js .bat .cmd ein. Die Trennzeichen sind beliebig, ich verwende wegen der besseren Lesbarkeit Leerzeichen. Wichtig: Die Dateiendungen müssen mit dem zugehörigen vorangestellten Punkt eingetragen werden!
Für den Wert von A_Aktion trage /windows/notepad.exe ein. Es können Aliase verwendet werden, was gerade bei der Verwendung vom USB-Stick besonders nützlich ist.
Für die anderen Gruppen kannst du analog verfahren und z.B. für B_Dateitypen und B_Aktion Dateiendungen von Bilddateien und den Pfad einer Anwendung eintragen, um im aktivierten Zustand statt des kleinen Standard-Bildbetrachters die dicke Bildbearbeitung bei Doppelklick zu starten.
Wenn die Aktion bei Doppelklick auf einen Ordner geändert werden soll, muss als Wert bei Ordneraktion eine Variante des Befehls Go, also etwa Go NEWTAB=findexisting eingetragen werden.
Alle Aktionen verwenden {filepath} als Argument.


Erstellen eines Symbolleisten-Schalters:
Nach der Script-Installation steht der neue Befehl ToggleDoubleclickAction im Anpassen-Menü (Reiter Befehle=>Skriptbefehle) zur Verfügung und kann per Drag & Drop in eine Symbolleiste gezogen werden. Damit der Zustand des Icons (Aktiviert/Deaktiviert) sichtbar wird, muss des Befehl nun im Befehlseditor geöffnet werden, da eine weitere Zeile hinzugefügt werden muss.
Trage im Befehlseditor in der obersten Zeile @toggle:if $glob!:tdca. Dadurch ändert sich der Zustand des Schalters, je nachdem ob die Variable tdca existiert oder nicht. Der fertige Schalter-Befehl sieht dann so aus:

Code: Alles auswählen

@toggle:if $glob!:tdca
ToggleDoubleclickAction
Der Befehl ToggleDoubleclickAction kann bei mehreren konfigurierten Dateityp-Gruppen auch mit einem oder mehreren Argumenten, die den Gruppen entsprechen, versehen werden. Um einen Schalter zu erstellen, der ausschließlich die Aktion für die Gruppe A_Dateitypen ändert, würde der Befehl also ToggleDoubleclickAction Gruppe_A lauten. Das Argument für die Ordneraktion lautet Ordner.
Wenn der Befehl ohne Argumente verwendet wird, werden alle Gruppen/Aktionen aktiviert.
Wichtig:wenn ein Argument verwendet wird muss auch die @Toggle-Zeile geändert werden, indem dem Variablennamen der zugeordnete Buchstabe angehängt wird. Bei Argument Gruppe_A heisst die Variable z.B. tdcaA; für das Argument Ordner heisst die Variable tdcaO. Bei Verwendung mehrere Argumente darf nur eine der entsprechenden Variablen als Indikator verwendet werden.
Der fertige Schalter-Befehl bei Verwendung der Argumente Gruppe_A und Ordner sowie der Variable für die Ordneraktion als Indikator sähe dann also so aus:

Code: Alles auswählen

@toggle:if $glob!:tdcaO
ToggleDoubleclickAction Gruppe_a Ordner
Hinweis: Wenn man mehrere Schalter mit dem Befehl ToggleDoubleclickAction erstellt, ist es ratsam, keinen Schalter ohne Argumente zu erstellen, um alle Optionen zu aktivieren, sondern dem Befehl stattdessen alle Argumente anzufügen, weil dann auch der Status der anderen betroffenen Schalter richtig angezeigt werden kann.

Das Script ToggleDoubleclickAction:

Code: Alles auswählen

Option Explicit
 'ToggleDoubleclickAction
' (c) 2014 Kundal
'
' This is a script for Directory Opus.
' See http://www.gpsoft.com.au/DScripts/redirect.asp?page=scripts for development information.

' Called by Directory Opus to initialize the script
Function OnInit(initData)

	initData.name = "ToggleDoubleclickAction"
	initData.desc = "Ändert die bei Doppelklick ausgeführte Aktion für Dateitypen und Ordner."
	initData.copyright = "(c) 2014 Kundal"
	initData.version = "v1.1"
	initData.default_enable = true
	initData.config.Ordneraktion = ""
	initData.config.A_Dateitypen = ""
	initData.config.A_Aktion = ""
	initData.config.B_Dateitypen = ""
	initData.config.B_Aktion = ""
	initData.config.C_Dateitypen = ""
	initData.config.C_Aktion = ""
	initData.config.D_Dateitypen = ""
	initData.config.D_Aktion = ""
	initData.config.E_Dateitypen = ""
	initData.config.E_Aktion = ""

	Dim cmd, url, uid
	Set cmd = initData.AddCommand

	url = "http://www.haage-partner.de/forum/viewtopic.php?f=45&t=4612"
	uid = "FFE9F1A0-7499-4F26-9EEB-13E0CF713CF6"

	cmd.name = "ToggleDoubleclickAction"
	cmd.method = "OnToggleDoubleclickAction"
	cmd.desc = "Ändert die bei Doppelklick ausgeführte Aktion für bestimmte Dateitypen. (Dateitypen und Aktion sind konfigurierbar)"
	cmd.label = " Doppelklick-Aktion wechseln"
	cmd.icon = "script"
	cmd.template = "Ordner/S,Gruppe_A/S,Gruppe_B/S,Gruppe_C/S,Gruppe_D/S,Gruppe_E/S"
End Function

Function OnAboutScript(data) 'v0.1
    Dim cmd : Set cmd = DOpus.Create.Command()
    If (Not cmd.Commandlist("s").exists("ScriptWizard")) Then 
      If (DOpus.Dlg.Request("Das Add-In 'ScriptWizard' wurde nicht gefunden."&vbCrLf&vbCrLf&_ 
         "Installiere 'ScriptWizard' von [resource.dopus.com]."&vbCrLf&"Das Add-In aktiviert diesen Dialog und bietet ausserdem "&_ 
         "einfaches updaten von Scripts und vieles mehr.","Ja, zum Download!|Abbrechen", "No About.. ", data.window)) Then _
         cmd.RunCommand("http://resource.dopus.com/viewtopic.php?f=35&t=23179")
      Else
         cmd.RunCommand("ScriptWizard ABOUT WIN="&data.window&" FILE="""&Script.File&"""")
   End If
End Function

Dim var_All, var_A, var_B, var_C, var_D, var_E, var_O
var_All = DOpus.vars.Exists ("tdca")
var_A = DOpus.vars.Exists ("tdcaA")
var_B = DOpus.vars.Exists ("tdcaB")
var_C = DOpus.vars.Exists ("tdcaC")
var_D = DOpus.vars.Exists ("tdcaD")
var_E = DOpus.vars.Exists ("tdcaE")
var_O = DOpus.vars.Exists ("tdcaO")

' Called when a file or folder is double-clicked
Function OnDoubleClick(doubleClickData)
    Dim A_A, A_D, B_A, B_D, C_A, C_D, D_A, D_D, E_A, E_D, O_A, ext
    O_A = Script.config.Ordneraktion
    A_A = Script.config.A_Aktion
    A_D = Script.config.A_Dateitypen
    B_A = Script.config.B_Aktion
    B_D = Script.config.B_Dateitypen
    C_A = Script.config.C_Aktion
    C_D = Script.config.C_Dateitypen
    D_A = Script.config.D_Aktion
    D_D = Script.config.D_Dateitypen
    E_A = Script.config.E_Aktion
    E_D = Script.config.E_Dateitypen
    ext = doubleClickData.item.ext
 
    On Error Resume Next
    If doubleClickData.item.is_dir <> 0 Then
        If (var_All = True or var_O = True) Then
            OnDoubleClick = True
            DOpus.NewCommand.RunCommand (""&O_A&"  {filepath}")
        End If
    Else
        If (var_All = True or var_A = True) Then
            If InStr(A_D, ext) <>0 Then
                OnDoubleClick = True
                DOpus.NewCommand.RunCommand (""&A_A&"  {filepath}")
            End If
        End If
    
        If (var_All = True or var_B = True) Then
            If InStr(B_D, ext) <>0 Then
                OnDoubleClick = True
                DOpus.NewCommand.RunCommand (""&B_A&"  {filepath}")
            End If
        End If
    
        If (var_All = True or var_C = True) Then
            If InStr(C_D, ext) <>0 Then
                OnDoubleClick = True
                DOpus.NewCommand.RunCommand (""&C_A&"  {filepath}")
            End If
        End If
    
        If (var_All = True or var_D = True) Then
            If InStr(D_D, ext) <>0 Then
                OnDoubleClick = True
                DOpus.NewCommand.RunCommand (""&D_A&"  {filepath}")
            End If
        End If
    
        If (var_All = True or var_E = True) Then
            If InStr(E_D, ext) <>0 Then
                OnDoubleClick = True
                DOpus.NewCommand.RunCommand (""&E_A&"  {filepath}")
            End If
        End If
    End If

End Function

' Implement the ToggleDoubleclickAction command
Function OnToggleDoubleclickAction(ClickData)
Dim got_A, got_B, got_C, got_D, got_E, got_O, Var
    got_A = ClickData.func.args.got_arg.Gruppe_A
    got_B = ClickData.func.args.got_arg.Gruppe_B
    got_C = ClickData.func.args.got_arg.Gruppe_C
    got_D = ClickData.func.args.got_arg.Gruppe_D
    got_E = ClickData.func.args.got_arg.Gruppe_E
    got_O = ClickData.func.args.got_arg.Ordner

    ' Clear all variables
    If Not (got_A =True Or got_B =True Or got_C =True Or got_D =True Or got_E =True Or got_O = True)  Then
        If var_All =True Then
            DOpus.vars.Delete ("tdca")
        Else
            DOpus.vars.Set "tdca", 1
            Set Var = DOpus.vars ("tdca")
            Var.persist = True
        End If
    End If

    If got_A=True Then
        If var_A = True Then
            DOpus.vars.Delete ("tdcaA")
        Else
            DOpus.vars.Set "tdcaA", 1
            Set Var = DOpus.vars ("tdcaA")
            Var.persist = True
        End If
    End If

    If got_B=True Then
        If var_B = True Then
        DOpus.vars.Delete ("tdcaB")
        Else
        DOpus.vars.Set "tdcaB", 1
        Set Var = DOpus.vars ("tdcaB")
        Var.persist = True
        End If
    End If
    
    If got_C=True Then
        If var_C = True Then
            DOpus.vars.Delete ("tdcaC")
        Else
            DOpus.vars.Set "tdcaC", 1
            Set Var = DOpus.vars ("tdcaC")
            Var.persist = True
        End If
    End If
    
    If got_D=True Then
        If var_D = True Then
            DOpus.vars.Delete ("tdcaD")
        Else
            DOpus.vars.Set "tdcaD", 1
            Set Var = DOpus.vars ("tdcaD")
            Var.persist = True
        End If
    End If
    
    If got_E=True Then
        If var_E = True Then
            DOpus.vars.Delete ("tdcaE")
        Else
            DOpus.vars.Set "tdcaE", 1
            Set Var = DOpus.vars ("tdcaE")
            Var.persist = True
        End If
    End If
    
    If got_O=True Then
        If var_O = True Then
            DOpus.vars.Delete ("tdcaO")
        Else
            DOpus.vars.Set "tdcaO", 1
            Set Var = DOpus.vars ("tdcaO")
            Var.persist = True
        End If
    End If
	ClickData.Func.Command.UpdateToggle
End Function

'MD5 = "8989f6cea3e14532dda6a5ba720e6d95"; DATE = "2014.11.29 - 10:46:52"
Das Script zum Download:
Event.File_ToggleDoubleclickAction.vbs.txt
v1.1
(13.71 KiB) 116-mal heruntergeladen

abr
Berater
Beiträge: 781
Registriert: 10. Apr 2007 02:50
Betriebssystem: Win 10 Home 64bit
Produkt: neueste Betaversion
Version DOpus: Pro
Wohnort: Hamburg

Re: Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von abr » 5. Apr 2014 15:47

Das sieht interessant aus. Aber wie steuert man eigentlich, welcher Modus angewendet werden soll? Gibt es da Modifiertasten? Gut wäre ein konkretes kleines Beispiel für Bilddateien,
also öffnen in normaler Vorschau, im der Bildbearbeitung, in Irfanview und vielleicht noch im Faststone Viewer. Was ist außerdem der Unterschied zu der Lösung, die Events wie bisher
mithilfe von Modifiertasten zu steuern (also zB. -> Doppelklick öffnet, -> Strg-Doppelklick öffnet in Irfanview, Alt-Doppelklick öffnet in der Bildbearbeitung, etc.)?

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von Kundal » 5. Apr 2014 21:11

Ich glaube kaum, dass ein Tasten-Junkie wie du viel Sinn in diesem Schalter findet. Als notorischer Mausschieber benutze ich das gelegentlich um z.B. Script-Dateien per Doppelklick öffnen zu können statt sie (versehentlich) zu starten, wenn ich intensiv mit derartigen Dateien arbeite. Wenn du stattdessen eine Tastenkombination benutzt, kann das den gleichen Effekt haben und du kannst verschiedenen Tastenkombis verschiedene Aktionen zuweisen. Mich nerven Tastenkürzel eher und mein Repertoire beschränkt sich auf Dinge wie Strg+A. :D

Was du anfragst geht mit diesem Script so nicht. Du kannst damit nicht alternativ 4 verschiedene Anwendungen für die gleiche Dateityp-Gruppe verwenden. Das Script ändert lediglich, was bei Doppelklick auf eine Datei passiert. Dieser Aktion kann man nur eine Anwendung zuweisen.

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von Kundal » 14. Apr 2014 22:43

Update: Ich habe das Script noch einmal überarbeitet, da das aktivieren/deaktivieren einzelner Schalter nicht richtig funktioniert hat, wenn man mehrere Schalter für einzelne Dateitypgruppen erstellt hat. Jetzt können alle Schalter separat aktiviert und deaktiviert werden, ohne dass der Staus der anderen Schalter ebenfalls geändert wird.

josinoro
Beiträge: 166
Registriert: 4. Aug 2013 19:58
Version DOpus: Pro

Re: Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von josinoro » 19. Apr 2014 11:50

Hallo Kundal,
Kundal hat geschrieben:Update: Ich habe das Script noch einmal überarbeitet, da das aktivieren/deaktivieren einzelner Schalter nicht richtig funktioniert hat, ...
vielen Dank für dieses Script. Jetzt funktioniert es bei meinen ersten Versuchen auch fehlerfrei.

Da ich viel mit Open-/Libre-Office arbeite, ist es schön, die Dateien als Archive öffnen zu können, da das ja lediglich anders benannte zip-Archive sind. Nun habe ich mir den Schalter so konfiguriert, dass bei aktivem Schalter die .odt und .ods Dateien mit WinRar geöffnet werden. Nun hätte ich diese aber gerne in DOpus angezeigt. Wie muss ich denn in der Konfiguration des Schalters den Eintrag x_Aktion definieren, damit mir der Inhalt des Archives im aktuellen Lister angezeigt wird?

Den Quellcode habe ich mir einmal angeschaut und es drängt sich bei meinen laienhaften Kenntnissen die Frage auf, ob man die A_ - E_ Variablen, Aktion und Dateitypen, nicht als Array definieren kann? Damit wäre der Funktionsumfang beliebig erweiterbar und eine Vielzahl der if-Abfragen würden entfallen.

mfg

josinoro

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von Kundal » 19. Apr 2014 13:06

Du musst die Dateiendungen .ods und .odt zunächst der Liste der ZIP-Erweiterungen unter Einstellungen=>Voreinstellungen=>ZIP- & andere Archive hinzufügen (mit Semikolon getrennt). Dann brauchst du in der Script-Konfiguration nur noch GO als Aktion eintragen.

Es mag sein, dass man das Script auch eleganter gestalten kann, aber ich bin auch nur Laie und Autodidakt und bin froh, dass ich inzwischen Einiges zum Laufen bringe. Wenn du konkreter beschreiben könntest wie das besser gemacht werden kann probiere ich das gerne aus und lerne dazu.

josinoro
Beiträge: 166
Registriert: 4. Aug 2013 19:58
Version DOpus: Pro

Re: Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von josinoro » 19. Apr 2014 14:00

Hallo Kundal,
Kundal hat geschrieben:Du musst die Dateiendungen .ods und .odt zunächst der Liste der ZIP-Erweiterungen unter Einstellungen=>Voreinstellungen=>ZIP- & andere Archive hinzufügen (mit Semikolon getrennt). Dann brauchst du in der Script-Konfiguration nur noch GO als Aktion eintragen.
Rattenscharf - das funktioniert super. Danke!

Jetzt habe ich aber zig Dateien in der Ordnerstruktur stehen und die Vorschau beim Überfahren der Datei mit der Maus zeigt mir korrekterweise einen Ordner an. Komme ich denn an die Definition / Eigenschaft der ZIP-Erweiterungen mittels Script ran?
Kundal hat geschrieben:Wenn du konkreter beschreiben könntest wie das besser gemacht werden kann probiere ich das gerne aus und lerne dazu.
Haha, gegen mich bist du, nachdem, was du hier postest, der Scriptgott. Das wollte ich auch nicht als Kritik verstanden wissen.

mfg

josinoro

Benutzeravatar
Kundal
Moderator
Beiträge: 1337
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
Produkt: DOpus 12 x64 - Letzte Betaversion
Version DOpus: Pro

Re: Doppelklick-Aktion für Dateitypen und Ordner ändern

Beitrag von Kundal » 29. Nov 2014 10:49

Update auf Version 1.1:
  • Das Script bietet jetzt volle Unterstützung für ScriptWizard von tbone. Dadurch wird der Info-Button in der Script-Konfiguration aktiviert. Der Info-Dialog ermöglicht direktes Aufsuchen dieser Webseite, Update auf die neueste Version und einiges mehr. Wenn ScriptWizard noch nicht installiert ist, erscheint ein Dialog, von dem aus man direkt zum Download des Scripts im Resource Centre gehen kann.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste