Beiträge von SEuBo

    Hatte dafür auch mal ne Funktion geschrieben... Wem sie nützt...

    Super Sache!


    Leider "ruckeln" die Fenster noch ein wenig, das sliden müsste etwas sanfter geschehen, dann wäre es optimal
    (oder ist das nur auf meinem Berufsschul-PC so ruckelig?)


    Aber, entschuldige SEuBo, fand ich die Lösung ... kompliziert.


    Ging mir ähnlich - deswegen hatte ich vor ewiger Zeit mal das hier gemacht
    WinSlide UDF


    Trotzdem schönes Script, und feine Umsetzung :)

    Es geht auch einfach mit StringReplace. Wenn € da ist, dann wird es eben ersetzt. Wenn nicht, dann nicht.
    ConsoleWrite(StringReplace("5,49 €", " €", "") & @CRLF)
    RegExp ist an der Stelle fast schon ein wenig "overpowered". (Unglaublich, dass ich das mal sage...)

    GUISwitch($pgctrl_tabs, $tab_pcinf) -> GUISwitch($hGui, $tab_pcinf)


    und ans Ende der Funktion noch:

    GUICtrlSendMsg($pgctrl_tabs, 0x1330, 1, 0) ; $TCM_SETCURFOCUS = 0x1330
    GUICtrlSendMsg($pgctrl_tabs, 0x1330, 0, 0) ; $TCM_SETCURFOCUS = 0x1330


    Wobei die letzten beiden Zeilen bestimmt auch eleganter gehen

    Nur noch mal der vollständigkeit halber:
    Wenn man viele solcher Variablen irgendwo einfügen muss, empfiehlt sich meiner bescheidenen Meinung nach StringFormat():
    Ich denke, statt diesem hier
    MsgBox(0,'',$sName & '|' & $sTyp & '|' & $sSonstiges)
    ist folgende Schreibweise etwas übersichtlicher
    MsgBox(0, '', StringFormat('%s|%s|%s', $sName, $sTyp, $sSonstiges))


    Ab einer bestimmten Länge und Komplexität, wird dieses "'text' & $variable & 'text'-Gebilde" nämlich wirklich unleserlich.

    $sNeuerName = StringRegExpReplace($sAlterName, '\W', '') ; Würde alles außer a-Z und 0-9 aus dem Namen entfernen.


    $sNeuerName = StringRegExpReplace($sAlterName, '[^-.\w\h]', '') ; Alles außer a-Z, 0-9, horizontale Whitespaces (Leerzeichen, TAB usw), '-' und '.'

    Bei meinen Tests war das Array immer leer


    Bist du sicher, dass der Array WIRKLICH leer ist?
    _ArrayDisplay hat nämlich, bedingt durch die Listview die es verwendet, Einschränkungen in der Zeichenlänge eines Strings.


    Und wer mal _StringBetween näher betrachtet hat, dem wird auffallen, dass es auf StringRegExp basiert. Sollte also keine Unterschiede ergeben.

    Das Problem ist, dass die Plugins die Funktionen im Hauptscript mit dieser Methode nicht nutzen können ...


    Das Stichwort hier ist interprozesskommunikation. Das geht entweder über TCP, über den Stdout-Channel (Also ConsoleWrite & StdoutRead) oder mit Windows-Nachrichten.
    Für letzteres dann hier nochmal ein Beispiel:


    (das kannst du übrigens im Prinzip so übernehmen für deine "plugins". Die aufzurufenden Funktionen werden in einer Warteschleife gehalten, wenn Sie beim Aufruf von PluginCall noch nicht aufgerufen werden können, und dann automatisch ausgeführt.


    Main.au3


    someplugin.au3

    @AutoItExe ... Funktioniert das auch von Computern aus, die kein Autoit drauf haben? Oder muss ich die Exe mitinstallieren?


    Wie AntiSpeed schon gesagt hat: Ja.


    Zitat


    Allerdings gibt mit Run eine 0 zurück. Was habe ich falsch gemacht?


    Probier es mal so rum:


    Hauptskript:
    $sScriptPath = @DesktopDir & '\someplugin.au3'
    $sParameters = '... das sind willkürliche informationen ... '
    Run(StringFormat('"%s" /AutoIt3ExecuteScript "%s" "%s"', @AutoItExe, $sScriptPath, $sParameters), @ScriptDir, @SW_HIDE)


    someplugin.au3:
    MsgBox(0,'',$CmdLine[1])


    /Edit
    Achso: Das ganze muss nicht mit Stringformat gelöst werden. Wenn dir das lieber ist, dann mach es so:
    Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sScriptPath & '" "' & $sParameters & '"', @ScriptDir, @SW_HIDE)

    Du kannst, von dem Server-Script aus, auch einfach andere AutoIt Scripte direkt aufrufen (diese müssen nicht einmal als .exe vorliegen).

    ; $sScriptPath = Pfad zu der .au3 Datei, die du ausführen möchtest.
    Run(StringFormat('"%s" /AutoIt3ExecuteScript "%s"', @AutoItExe, $sScriptPath), @ScriptDir, @SW_HIDE, 4 + 2)