Seite 1 von 2

WinRar und Makroslots

Verfasst: Di 6. Okt 2020, 23:53
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 :-)

Re: WinRar

Verfasst: Mi 7. Okt 2020, 10:05
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.

Re: WinRar

Verfasst: Fr 9. Okt 2020, 17:53
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?

Re: WinRar

Verfasst: Fr 9. Okt 2020, 18:37
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?

Re: WinRar

Verfasst: Sa 10. Okt 2020, 10:42
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.

Re: WinRar

Verfasst: Fr 22. Jan 2021, 06:42
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.

Re: WinRar

Verfasst: Fr 22. Jan 2021, 08:51
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 ;)

Re: WinRar

Verfasst: Sa 23. Jan 2021, 18:34
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!

Re: WinRar

Verfasst: Mo 25. Jan 2021, 11:37
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.

Re: WinRar

Verfasst: Di 26. Jan 2021, 12:50
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 :-)