Ordneranzeige überprüfen und bei Bedarf ändern

Aktuelle Version: 12.7 (23.11.2017)
Alles zum Thema Directory Opus
Antworten
Mecum
Beiträge: 101
Registriert: 13. Dez 2008 13:34
Betriebssystem: Windows 7 Pro
Produkt: DOpus 11
Version DOpus: Pro

Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von Mecum » 26. Jul 2016 03:19

Aloha allerseits, und danke schonmal vorab für eure Hilfe - ich bin wirklich froh, dass es hier ein solch geniales Forum gibt und Kundal und tbone mit wirklich nützlichen Tips sich immer wieder bereitstellen ihr Wissen zu teilen.

Meine aktulle Frage lautet:

Gibt es eine Möglichkkeit die Ordneranzeige auf den Laufwerksbuchstaben hin zu prüfen und im Falle eines bestimmten Laufwerkbuchstabens die Ordneranzeige auf C:\ zu ändern?

Das Problem ist, dass ich das Auswerfen (Unmounten) einer virtuellen Festplatte gerne mit nem Button vereinfachen möchte, was aber nur geht, wenn in der aktuellen Ordneranzeige eben dieses Laufwerk nicht geöffnet ist, da sonst eine Fehlermeldung von Veracrypt ausgegeben wird. Es müsste also irgendwie folgendermassen ablaufen:

1. checken ob in der Ordneranzeige der Pfad des aktuell angezeigten Ordners "Z:\" enthält
2. Wenn dem so ist, dann Wechseln der Ordneranzeige auf "C:\"
3. checken ob Dual-Ordneranzeige aktiv und wenn ja ob der Pfad des zweiten angezeigten Ordners "Z:\" enthält und wenn ja wechseln auf "C:\"
4. virtuelles LW unmounten

Es wäre genial, wenn das alles iwie mit DOpus eigenen Scriptbefehlen ginge. Ich wüsste sonst nämlich nicht, wie ich aus VBS zb heraus die jeweiligen Ordneranzeigen auslesen und ändern könnte. Die einzige Alternative wäre per Script DOpus präventiv komplett zu schliessen, anschliessend das LW auszuwerfen und dann DOpus wieder zu starten.

Falls ihr irgendwelche brauchbaren Ideen habt wäre ich sehr dankbar.

Vielen Dank und liebe Grüße
Mecum

Benutzeravatar
tbone
Berater
Beiträge: 405
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von tbone » 29. Jul 2016 22:36

Müsste alles mit Scripting gehen, aber geht vermutlich auch mit den Retro-Buttons:

Code: Alles auswählen

@ifpath:Z:
Go PATH C: CURRENT 

@ifset:DUAL=on
@ifpath:Z:
Set FOCUS TOGGLE
Go PATH C: CURRENT 
Set FOCUS TOGGLE
@ifpath:common

@confirm Drive unmounten?
//unmount your drive here

Benutzeravatar
tbone
Berater
Beiträge: 405
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von tbone » 29. Jul 2016 22:48

Naja, vielleicht doch nicht. Habe es gerade nochmal getestet, die verschachtelten @if.. scheinen problematisch.
Also nimm doch lieber einen Script-Button. Alle Informationen, ob Dual oder nicht und welcher Pfad aktuell ist, ist über das OnClick-Data Objekt und seine Unterobjekte zu beziehen. Check mal die Doku dazu.

Mecum
Beiträge: 101
Registriert: 13. Dez 2008 13:34
Betriebssystem: Windows 7 Pro
Produkt: DOpus 11
Version DOpus: Pro

Re: Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von Mecum » 31. Jul 2016 10:12

Ok, vielen Dank.
Hab mich jetzt mal bisserl mit Script-Buttons auseinandergesetzt und scheint gut zu funktionieren.

Allerdings fehlt mir ein wenig das Verständnis dafür, was geht und was nicht. Wenn ich das beim Rumspielen richtig begriffen habe, dann kann man zB keine globalen Script-Variablen definieren, richtig? Das scheint nur inenrhalb der entsprechenden Funktionen zu gehen. Das da klappt also nicht:

Code: Alles auswählen

@script vbscript

Dim strDriveLetter, strDriveLabel
strDriveLetter = "Z:"   ' Set driveletter to be verified
strDriveLabel = "Backup"  ' Set drivelabel to be verified

Function OnClick (ByRef clickData)
   '
End Function
Was ich leider auch noch nicht herausgefunden habe ist, wie man Variablen an Functions und Subs übergeben kann. Als Beispiel hier eine separate Function, die nur für Messages aufgerufen wird:

Code: Alles auswählen

@script vbscript

Function dopusMessage (ByVal doMessage)

   Dim dlg
   Set dlg = clickData.func.Dlg
   dlg.message = doMessage
   dlg.buttons = "OK"
   dlg.icon = "info"
   dlg.title = "For your Information"
   dopusMessage = dlg.Show

End Function


Function OnClick (ByRef clickData)

   Dim strDriveLetter, strDriveLabel
   strDriveLetter = "Z:"   ' Set driveletter to be verified
   strDriveLabel = "Backup"  ' Set drivelabel to be verified

   If DRIVELETTER = strDriveLetter Then
      If DRIVELABEL = strDriveLabel Then
         'do the magic
      Else
         dopusMessage "Sorry, richtiger Laufwerksbuchstabe, aber falsche Platte"
      End If
   Else
      dopusMessage "Sorry, kein Platte an " & strDriveLetter & " gefunden"
   End If

End Function
DRIVELETTER und DRIVELABEL sind hier nur Platzhalter für Ausleseroutinen der entsprechenden Werte. Dass hier zwei IF Sätze verschachtelt sind ist leider nötig, da es sonst bei fehlendem LW beim Auslesen des Labels zu nem Fehler kommt.

Leider funktioniert diese Variante nicht. Workarounds kann ich natürlich zammenbasteln, aber eleganter wäre es doch, wenn ich aus der Hauptroutine heraus entsprechende Subroutinen inklusive der Weitergabe von Variablen (oder zumindest deren Inhalte) aufrufen könnte.

Geht das denn überhaupt?

Vielen Dank schon mal
Mecum

Benutzeravatar
tbone
Berater
Beiträge: 405
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von tbone » 31. Jul 2016 15:43

Globale Variablen sollten funktionieren, so auch reguläre Subs und Functions.
Mir ist bislang nichts untergekommen, was Script-technisch nicht wie erwartet funktioniert, sei es JS oder VBS.

"Gemischt" verhält es sich mit DOpus spezifischen Methoden aus den diversen Objekten, die verwendet man in Script-Buttons manchmal lieber nicht global, sondern in der OnClick() Routine.

Vielleicht machst Du mal eines der Beispiele/Rümpfe fertig und zeigst genau was Deiner Meinung nicht funktioniert, ich will eventuelle Merkwürdigkeiten nicht ausschließen, aber so können wir das Problem vermutlich besser nachvollziehen.

Mecum
Beiträge: 101
Registriert: 13. Dez 2008 13:34
Betriebssystem: Windows 7 Pro
Produkt: DOpus 11
Version DOpus: Pro

Re: Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von Mecum » 31. Jul 2016 16:02

Danke, hier ein Beispiel:

Code: Alles auswählen

@script vbscript

Dim strDriveLetter
strDriveLetter = "Z:"

Function dopusMessage (ByVal doMessage)

   Dim dlg
   Set dlg = clickData.func.Dlg
   dlg.message = doMessage
   dlg.buttons = "OK"
   dlg.icon = "info"
   dlg.title = "For Your Information"
   dopusMessage = dlg.Show

End Function


Function OnClick (ByRef clickData)

   If strDriveLetter = "Z:" Then
      dopusMessage "Laufwerksbuchstabe " & strDriveLetter & " passt"
   Else
      dopusMessage "Laufwerksbuchstabe " & strDriveLetter & " passt nicht"
   End If

End Function

Benutzeravatar
tbone
Berater
Beiträge: 405
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von tbone » 1. Aug 2016 11:24

Dein Code ist nicht korrekt gewesen, immer die Other-Logs/Script-Konsole im Auge behalten um solche Fehler schnell zu erkennen. Du hast in dopusMessage() die Variable clickData verwendet, die der Funktion nicht bekannt war. Das gab einen Scriptfehler und dann läuft der ganze Button natürlich nicht.

Ich habe die fehlende Variable kurzerhand mit durchhereicht und nun läuft es wie erwartet.

Code: Alles auswählen

Dim strDriveLetter
strDriveLetter = "Z:"

Function dopusMessage (ByVal doMessage, clickData)
   Dim dlg : Set dlg = clickData.func.Dlg
   dlg.message = doMessage
   dlg.buttons = "OK"
   dlg.icon = "info"
   dlg.title = "For Your Information"
   dopusMessage = dlg.Show

End Function


Function OnClick (ByRef clickData)
   If strDriveLetter = "Z:" Then
      dopusMessage "Laufwerksbuchstabe " & strDriveLetter & " passt", clickData
   Else
      dopusMessage "Laufwerksbuchstabe " & strDriveLetter & " passt nicht", clickData
   End If
End Function

Mecum
Beiträge: 101
Registriert: 13. Dez 2008 13:34
Betriebssystem: Windows 7 Pro
Produkt: DOpus 11
Version DOpus: Pro

Re: Ordneranzeige überprüfen und bei Bedarf ändern

Beitrag von Mecum » 1. Aug 2016 15:42

Perfekt, VIELEN DANK !!!

Ich dachte ja, dass clickData eine globale Variable sei - mein Fehler, danke für deine Hilfe :)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast