AutoIt-Aktualisierungseingabe mit MsgBox-Zeile zum Kopieren / Einfügen

1739
ICE

Ich habe in letzter Zeit eine Menge zufälliger Skripte erstellt, von denen keines wirklich nützlich ist, aber sie helfen mir, verschiedene Dinge zu verstehen, und ich verwende sie oft als Referenz ... sowieso eine der Optionen für die Umrissschaltflächen für eines meiner Skripts ist ein Popup-Msgbox-Generator, der einen Code generiert, den ich einfach kopieren und einfügen kann (es gibt viele Meldungsfelder im Skript),
aber ich habe Probleme mit der in der Eingabe '$ codebox' angezeigten Variablen:

$code = "MsgBox(0, $title, $message)"  GUICtrlSetData($codebox, $code) 

dies zeigt:

"MsgBox(0, $title, $message)" 

und nicht die in der Variablen gespeicherten Daten.

Kann ich eine Variable in einer solchen Variable enthalten? Ich bin nicht wirklich sicher, wie ich das sonst tun soll. Hat jemand eine mögliche Problemumgehung, die ich mir ansehen könnte? Ich habe herumgesucht, bin aber leer gelaufen.

ps: das aktualisierte Skript kann hier gefunden werden

1
Ohne die "" um die MsgBox versucht? (Entschuldigung, ich habe es nicht getestet, nur einen kurzen Blick auf den Code.) Ich glaube, dass "" $ - Code den Eindruck erweckt, es sei nur eine Zeichenfolge und kein Code. Darius vor 10 Jahren 1
Schön, das hat den Fehler überstanden, aber dadurch wird das Meldungsfeld hochgefahren und eine 1 an die Codebox zurückgegeben ..? ICE vor 10 Jahren 0
Ich lerne auch noch über das AutoIT-Skript, aber ich habe festgestellt, dass MsgBox nach einem erfolgreichen / fehlgeschlagenen Lauf einen Wert zurückgibt. Warum der Rückkehrcode http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm Darius vor 10 Jahren 1

1 Antwort auf die Frage

2
Darius

Mögliche Lösung: $ code = MsgBox (0, $ title, $ message)

Dadurch wird jedoch die MessageBox ausgelöst und angezeigt (nicht bei GUICtrlSetData).

Wenn Sie in der MsgBox auf "OK" klicken, wird der Wert Ihrer Aktion über diesen Link zurückgegeben: http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm

Deshalb gibt $ code 1 zurück, was bedeutet, dass Sie auf OK geklickt haben.

EDIT: (Jetzt verstehe ich, was ICE wollte) Verwenden Sie diesen Code:

$code = 'MsgBox(0, ' & '"' & $title & '"' & ', ' & '"' & $message & '"' & ')' 

Ok bevor du (und andere) mich mit WTF und all dem "und" erschießen, lass mich erklären:

Wenn Sie den $ -Code ausdrucken, wird Folgendes generiert:

MsgBox(0, "test", "messages and messages and messages") 

Dieser Code kann, so wie es der ICE möchte, kopiert und sofort in den ICE-Code übernommen werden. Deshalb müssen Sie ein einfaches Anführungszeichen (') verwenden, um den Text zu sperren, und doppelte Anführungszeichen (") als normalen Text eingeben, um den obigen Code zu generieren.

Wenn ich keine Kombination aus einfachen und doppelten Anführungszeichen gesetzt habe, wird dies generiert (etwas, das ich nach dem Testen herausgefunden habe):

MsgBox(0, test, messages and messages and messages) 

Und dieser Code funktioniert nicht nach dem einfachen Kopieren und Einfügen in AutoIt. Sie müssen diese Anführungszeichen hinzufügen (entweder doppelt oder einfach).

AutoIT funktioniert entweder mit einfachen oder doppelten Anführungszeichen als Textmarker. Bleiben Sie also bei einem, mit dem Sie sich wohl fühlen. Wenn Sie ein doppeltes Anführungszeichen als Text kennzeichnen möchten, verwenden Sie das einfache Anführungszeichen als Textmarkierung und umgekehrt.

Hoffe das hilft.

Thanks for the help, Darius. I am trying to get the status bar to show the command for MsgBox, with the given title & message included in the codebox, Or possibly include a button function to place the MsgBox command into the script so I don't actually have to type the MsgBox command. My end goal is to build a type of script builder, or possibly even a text editor.. I am working on one piece at a time, though ICE vor 10 Jahren 0
@ICE Sorry, wenn ich deine Absicht missverstanden habe .. wenn du möchtest, dass die "Statusleiste" den Befehl für die MsgBox anzeigt, dann ist dein aktueller Code ($ code = "MsgBox .....") korrekt, da er genau zeigt, was er will auftauchen - aber da Sie das "" haben, wird die MsgBox nicht angezeigt, da sie als Text behandelt wird. Wenn sowohl die MsgBox als auch der Code erscheinen sollen, benötigen Sie möglicherweise einen $ code2 ohne "" und $ Code1 mit "", um den Text des Codes zu behalten. Oder missverstehe ich etwas? Darius vor 10 Jahren 0
Ich möchte, dass der vollständige msgbox-Befehl in der Codebox angezeigt wird, ohne (wenn möglich) die Message-Box tatsächlich aufzurufen. Was genau meinen Sie mit $ code2? Soll ich versuchen, den Befehl in einer anderen Variablen erneut einzufangen? Wenn ich die Anführungszeichen entferne, wird die 1 anstelle des Befehls zurückgegeben. Kann ich dies tun, um zu vermeiden, dass das Meldungsfeld tatsächlich auftaucht? Tut mir leid, wenn das nicht klar war, mein Geist ist jetzt überall im Ganzen: P ICE vor 10 Jahren 0
Nice, the edit did exactly what I was looking for. I usually have trouble with the quote marks, now I understand why. Thank you again, Darius, you have been a big help! ICE vor 10 Jahren 0