WinRar und Makroslots

Hilfe & Unterstützung für das ISN AutoIt Studio
ISN_Fan
Beiträge: 63
Registriert: Mo 8. Feb 2016, 14:46
Kontaktdaten:

WinRar und Makroslots

Beitrag von ISN_Fan »

Hallo,

in den ISN-Makroslot 7 möchte ich ein Script legen, welches von dem geöffneten Projekt eine WinRar auf USB erstellt.
Dazu brauche ich den "Pfad des aktuell geöffneten Projekts" und den "Namen des aktuell geöffneten Projektes."

Problem: @Scriptdir gibt das Verzeichnis von jenem Script zurück, welches in ISN-Makroslot 7 liegt und ausgeführt wird.
Wie erhalte ich die Daten vom Projekt, dass im aktuellen „ISN Autoit Studio“ geöffnet ist?

Kann ich dazu _ISN_Variablen_aufloesen("%ProjectName%") nutzen oder gibt es eine bessere Möglichkeit?

%ProjectDir%
Pfad zum Aktuell geöffnetem Projekt.

%ProjectName%
Name des aktuell geöffneten Projektes.

Danke

PS: Im Makroslot kann man eine Checkbox setzen
(x) Parameter mittelts Execute ausführen (ermöglicht Variablen aus dem ISN)

Execute(_ISN_Variablen_aufloesen)("%ProjectName%") )
geht nicht :-)
Zuletzt geändert von ISN_Fan am Di 26. Jan 2021, 12:50, insgesamt 1-mal geändert.
Benutzeravatar
ISI360
Administrator
Beiträge: 273
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: WinRar

Beitrag von ISI360 »

Hallo

Das sollte kein propblem sein. Du kannst in den ganzen Pfadangaben der Makros alle ISN Variablen direkt verwenden. Es müsste also schon ausreichen, in eine Pfadangae zb. %ProjectDir% zu schreiben. (Ohne weitere Funktionen...das macht das ISN schon selbst)

So könntest du zb. mit dem Makro "Programm ausführen" deine gewünschten Werte via Variablen (zb. %ProjectDir%) als Parameter zu einem externen Tool übergeben. Die "Execute Checkbox" musst du in diesem Fall nicht zwingend setzten. ISN eigene Variablen werden immer aufgelöst. Du könntest mir der Checkbox nur "noch mehr" rausholen...sprich jede beliebige Variable aus dem AutoIt Quellcode könnte damit abgerufen werden.
ISN_Fan
Beiträge: 63
Registriert: Mo 8. Feb 2016, 14:46
Kontaktdaten:

Re: WinRar

Beitrag von ISN_Fan »

Ich korriegiere mich.

Ich möchte im Script auf die Variable zugreifen.

Beispiel

test.au3

beinhaltet

MsgBox ( 262144 , "%ProjectDir% " , %ProjectDir% )

F5 in ISN ergibt Fehler

: ==> Unable to parse line.:

Wie kann ich Variablen wie %ProjectDir% diekrekt in meinem Script verwenden und mir den Inhalt der Variablen ausgeben lassen?
ISN_Fan
Beiträge: 63
Registriert: Mo 8. Feb 2016, 14:46
Kontaktdaten:

Re: WinRar

Beitrag von ISN_Fan »

ISI360 hat geschrieben: Mi 7. Okt 2020, 10:05 So könntest du zb. mit dem Makro "Programm ausführen" deine gewünschten Werte via Variablen (zb. %ProjectDir%) als Parameter zu einem externen Tool übergeben. Die "Execute Checkbox" musst du in diesem Fall nicht zwingend setzten. ISN eigene Variablen werden immer aufgelöst. Du könntest mir der Checkbox nur "noch mehr" rausholen...sprich jede beliebige Variable aus dem AutoIt Quellcode könnte damit abgerufen werden.
Kannst Du dafür ein lauffähiges Bespiel posten?
Benutzeravatar
ISI360
Administrator
Beiträge: 273
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: WinRar

Beitrag von ISI360 »

Achso, also direkt in deinem Skript kannst du leider keine ISN Varibalen verwenden. Wenn du das machen willst, musst du dein Skript als ISN Plugin umschreiben und mit der Plugin-Schnittstelle an das ISN binden. Dann könntest du auch ISN Variablen im Skript abfragen. (So machht das zb. auch das ISN Form Studio 2)
Du kannst dir dazu aber die verschiedenen Demo Plugins auf meiner Homepage ansehen...falls du daran interesse hast.

Anbei noch ein Beispiel mit dem "Befehl ausführen" Makro: (Mit Befehl ausführen kannst du quasi alles machen. Da ist "Programm starten" vlt. mehr limitiert)

Code: Alles auswählen

Run(@ComSpec & " /c " & "echo "& Eval("Offenes_Projekt") & "& pause")
-> Dieser Code zeigt eine cmd Box mit dem Pfad des aktuell geöfffneten ISN Projektes an. Dabei könntest du mit "Eval" jede beliebige Variable aus dem ISN Quellcode an externe Programme übergeben. (In diesem Fall wird es an eine cmd box übergeben)

Code: Alles auswählen

Run(@ComSpec & " /c " & "echo "& _ISN_Variablen_aufloesen("%ProjectDir%") & "& echo "& _ISN_Variablen_aufloesen("%ProjectName%") & "& pause")
-> Und so könntest du die verschiedenen ISN Variablen mir "Befehl ausführen" verwenden.

Hoffe das hilft dir etwas.
ISN_Fan
Beiträge: 63
Registriert: Mo 8. Feb 2016, 14:46
Kontaktdaten:

Re: WinRar

Beitrag von ISN_Fan »

Danke ISI360, Corona hat hier einige durcheinander gewirbelt.

Fast auf der Zielgeraden:

Run(@ComSpec & " /c " & "start "& "explorer " & (_ISN_Variablen_aufloesen("%ProjectDir%")))
+ öffnet Pfad im Explorer

Run(@ComSpec & " /c " & "start "& """C:\Total Commander\TOTALCMD64.EXE""" & " " & (_ISN_Variablen_aufloesen("%ProjectDir%")))
- geht, wenn der Pfad keine Leerzeichen enthält

Wie muss die Schreibweise geändert werden, damit der Pfad mit Leerzeichen in Anführungszeichen übergeben wird?

Run(@ComSpec & " /c " & "start "& """C:\Total Commander\TOTALCMD64.EXE""" & " " & """ & (_ISN_Variablen_aufloesen("%ProjectDir%") & """ ))
- so geht es nicht
- mehrere andere Schreibweisen wie '"' ... probiert, geht nicht

Was mir noch nicht ganz klar ist, wann genau und an welcher Stelle muss Eval verwendet werden?
Obiges funktionierte - bis auf die Probleme mit Leerzeichen im Pfad - auch ohne Eval.


Bei der Gelegenheit noch ein Vorschlag

Eine Schaltfläche "testen" auf "folgende Aktion durchführen" in "Makro bearbeiten" würde sehr viele Schritte sparen, um alles zu bestätigen, im Menü dann einen Makroslot ausführen, Fehler feststellen, und das ganze neu.
Benutzeravatar
ISI360
Administrator
Beiträge: 273
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: WinRar

Beitrag von ISI360 »

Hallo

Also folgender Befehl müsste funktionieren:

Code: Alles auswählen

Run('C:\Total Commander\TOTALCMD64.EXE "' & _ISN_Variablen_aufloesen("%ProjectDir%") & '"')
-> Im meinem ersten Beispiel erfolgte die Ausgabe in einem CMD Fenster. Wenn du das nicht brauchst, kannst du den ganzen @ComSpec & " /c " & "start " kram weglassen. Dann ist der Syntax auch etwas übersichtlicher.

Und wegen Eval:
Mit Eval kannst du ja jede beliebige Variable aus dem ISN Quellcode auslesen (falls gewünscht). Das würde dann zb so aussehen (für den Projekt Pfad):

Code: Alles auswählen

Run('C:\Total Commander\TOTALCMD64.EXE "' & Eval("Offenes_Projekt") & '"')
"Offenes_Projekt" steht in diesem Fall für die Variable $Offenes_Projekt im ISN Quellcode.
Hat im endeffekt beides den selben effekt. (Für _ISN_Variablen_aufloesen gibt es halt eine offizielle Dokumentation in der Hilfe. Mit Eval bist du mehr oder weniger auf dich gestellt)

PS: Stimmt, eine Testen funktion im Makro wäre echt eine Gute Idee! Ist notiert für die nächste Version ;)
ISN_Fan
Beiträge: 63
Registriert: Mo 8. Feb 2016, 14:46
Kontaktdaten:

Re: WinRar

Beitrag von ISN_Fan »

Vielen Dank, das teste ich. Ein guter Tipp :-)

Edit – ich habe es erfolgreich testen können – vielen Dank!

Eine abschließende Frage – eventuell habe ich das schon einmal gefragt:

Gibt es bereits jetzt die Möglichkeit, dass ich einen Makroslot so definiere, dass er in jedem - auch in älteren - Projekt(en) verfügbar ist?

Ansonsten ist das ein Vorschlag für eine kommende Version, dass es neben lokalen Makroslots auch globale gibt, die dann von jedem Projekt verwendet werden können.

Vielen Dank und ein schönes Wochenende!
Benutzeravatar
ISI360
Administrator
Beiträge: 273
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: WinRar

Beitrag von ISI360 »

Freut zu hören ;)

Zu dem Makros:
Nein, dies ist leider nicht möglich. Die markos werden in dem jewailigen projekt abgepsiechert und sind daher nicht global verfügbar.
Du kannst die Markos aber aus einem projekt exportieren und in ein anderes importieren.
ISN_Fan
Beiträge: 63
Registriert: Mo 8. Feb 2016, 14:46
Kontaktdaten:

Re: WinRar

Beitrag von ISN_Fan »

Vielen Dank.

Wenn ich das richtig sehe, kann ich immer nur alle Makros exportieren und importieren.

Vorschlag: es werden nur jene Makros exportiert, die ausgewählt sind.

In der Liste ist im Moment nur eine einfache Auswahl einer Zeile möglich.

(x) Makro 1
( ) Makro 2
( ) Makro 3
(x) Marko 4

Vielleicht wäre das eine einfache Möglichkeit, um mehrere ( nicht alle ) Makros für einen Export auszuwählen.

Später als Vorschlag wäre es vielleicht möglich, eine globale Makro.ini anzulegen, in der alle Makros enthalten sind, die für jedes Projekt gelten sollen.

Aber das wird sicherlich Zukunftsmusik sein. Ich habe auch erst vor wenigen Monaten den großen Nutzen der Makroslots für mich entdeckt und schnell gemerkt,Dass ich gerne viel mehr hätte.

Die Bildschirmhöhe und Bildschirmbreite wurde ohne Probleme 30-40 Makroslots darstellen können, wo derzeit leerer Raum ist.

Was ich noch nicht testen konnte – wenn ein zu importierendes Makro den gleichen Makroslot belegt wie das vorhandene Makro, dann wird es wahrscheinlich überschrieben. Da muss ich mir noch etwas überlegen.

Zudem liegen die Makros in der ISN Datei vor, sodass man diese dort auch heraus kopieren könnte – allerdings kann das recht schnell zu Überschneidungen mit bereits vorhandenen belegten Makroslots führen.

Mal schauen, was die Zukunft bringt :-)
Antworten