Externes .au3 Script starten/ausführen

  • moin leute.

    bin neu hier und möchte mich hiermit erstmal vorstellen.

    ich weiss, dass es hier 1-2 ähnliche threads gibt, die mir jedoch nicht ganz weiterhalfen.

    seit tagen in ich an folgendem problem am werkeln und komme einfach nicht weiter.
    gibt es eine möglichkeit ein externes .au3 script in einer fertigen exe zu öffnen und die in dem script vorhandene funktion auszuführen?

    in der exe kommt es iwann zu dem aufruf der funktion: _test()

    diese befindet sich jedoch im externen script und das sollte nach möglichkeit auch so bleiben. würde das script vorher per FileOpenDialog öffnen. ich weiss, dass es mit include kein prolem wäre, jedoch kommt das für mich nicht in frage.

    die funktion wäre bspw. :

    [autoit]


    Func _test()
    Msgbox(0, "", "OK")
    EndFunc

    [/autoit]

    leider funktioniert das hier nicht recht oder ich übersehe etwas

    [autoit]

    RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & $ex_script & '"')

    [/autoit]

    EDIT:

    moin. hab jetzt mal folgendes probiert.

    Spoiler anzeigen
    [autoit]

    _test()

    [/autoit] [autoit][/autoit] [autoit]

    Func _test()
    MsgBox(0,"","OK")
    EndFunc

    [/autoit] [autoit]

    RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptDir & "\test.au3" & '"')

    [/autoit]

    dies funktioniert auch anstandslos. leider folgende variante jedoch nicht.

    Spoiler anzeigen
    [autoit]

    _test()

    [/autoit] [autoit][/autoit] [autoit]

    Func _test()
    MsgBox(0,"",$test_var)
    EndFunc

    [/autoit] [autoit]

    Global $test_var = 1
    RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptDir & "\test.au3" & '"')

    [/autoit]

    das heisst die variable gibt es wohl nach dem compilen nicht mehr ;(

    Vielen Dank vorab.

    Gruß golum

    Einmal editiert, zuletzt von golum (10. Januar 2014 um 12:26)

  • habe für sowas mal was geschrieben nur leider kann ich zur zeit nicht nachschauen, erst heute abend.
    Was du machen musst ist dem 2. Script eine möglichkeit geben eine variable im 1. Script zu verändern. denn

    Zitat

    Global $test_var = 1
    RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptDir & "\test.au3" & '"')

    kann nicht funktionieren, weil das 2. Script keinerlei möglichkeiten hat die Variable aus dem 1. Script zu lesen.

    Wenn es nur simpel sein soll würde dir sicher auch:

    [autoit]


    Global $test_var = 1
    RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptDir & "\test.au3" & '" "' & $test_var & '"' )

    [/autoit][autoit]


    _test()

    [/autoit][autoit][/autoit][autoit]

    Func _test()
    if $CmdLine[0] > 0 Then MsgBox(0,"",$CmdLine[1])
    EndFunc

    [/autoit]


    genügen.

    Einmal editiert, zuletzt von Skerg (10. Januar 2014 um 14:30)