script ohne speichern ausführen....

  • hallo


    gibt es irgendeine Möglichkeit Autoit direkt zu sagen, was es machen soll? also ohne z.b. das script hier:

    $test = 1
    $test += $test
    msgbox(0,"sinnloses script",$test)


    extra in eine Datei zu speichern und dann mit Autoit ausführen zu lassen?

    grez

    • Offizieller Beitrag

    AutoIt muß ja die Skriptanweisungen irgendwoher lesen können.
    Solange du die Befehle nur in SciTE eintippst, existieren sie ja noch nicht in lesbarer Form. Erst durch das Abspeichern kann das Geschriebene auch wieder gelesen werden.

    Aber warum die Frage?
    Du mußt doch sowieso eine Datei erstellen um die Codezeilen zu schreiben - warum willst du sie nicht speichern ?? *kopf-kratz*

  • aus der Hilfe:

    Code
    To execute a single line of code, use the command:
    Run(@AutoItExe & '  /AutoIt3ExecuteLine  "MsgBox(0, ''Hello World!'', ''Hi!'')"') The tray icon will not be displayed when using /AutoIt3ExecuteLine
  • hi


    @buggy... Ich möchte, das ich etwas in ein edit schreiben kann, und es dann direkt ausgeführt wird.

    @leviathan... danke, aber ich möchte auch merzeilige dinge schreiben können... da hängt sich autoit aber auf :( sonnst hät ich es ja auch mit der autoitx.dll machen können...


    grez

  • Ich hab hier mal eine Lösung für SCitE:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <Constants.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>

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

    If Not IsDeclared("WM_COPYDATA") Then Const $WM_COPYDATA = 0x4A
    $GUI = Guicreate("Run without saving",200,50,10,10,$WS_CAPTION,$WS_EX_TOPMOST+$WS_EX_TOOLWINDOW )

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

    If Not ProcessExists('SciTE.exe') Then Exit (0)
    ; Get SciTE DirectorHandle
    $Scite_hwnd = WinGetHandle("DirectorExtension")
    GUIRegisterMsg($WM_COPYDATA, "MY_WM_COPYDATA")
    $My_Dec_Hwnd = Dec(StringTrimLeft($GUI, 2))
    $temp = ClipGet()
    ClipPut('')
    SendSciTE_Command($My_Dec_Hwnd, $Scite_hwnd, 'menucommand:207')
    SendSciTE_Command($My_Dec_Hwnd, $Scite_hwnd, 'menucommand:204')
    $text = ClipGet()
    ClipPut($temp)
    If StringLeft($text,6) = ";#BETA" Or StringInStr($text,"#AutoIt3Wrapper_Version=Beta") Then
    $AutoItExe = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","betaInstallDir") & "\Autoit3.exe"
    $AutoItVers = "Beta: "& RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","betaVersion")
    Else
    $AutoItExe = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","InstallDir") & "\Autoit3.exe"
    $AutoItVers = "Stable: "& RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","Version")
    EndIf
    if $AutoItExe = "\Autoit3.exe" Then
    $AutoItExe = @AutoItExe
    $AutoItVers = @AutoItVersion
    EndIf
    $File = FileOpen(@TempDir & '\~runnow.au3',2)
    FileWrite($File,$text)
    FileClose($File)

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

    $btn = GUICtrlCreateButton("STOP (" & $AutoItVers & ")",0,0,200,50)
    GUISetState()
    ConsoleWrite(">Started Executing without Saving" & @LF)
    $startedPID = Run('"' & $AutoItExe & '" ' & '/AutoIt3ExecuteScript "' &@TempDir & '\~runnow.au3"','','',$STDERR_CHILD + $STDOUT_CHILD);Run
    While ProcessExists($startedPID)
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Or $msg = $btn Then
    ProcessClose($startedPID)
    Exit
    EndIf
    If StdoutRead($startedPID,1) Then ConsoleWrite(StdoutRead($startedPID))
    If StderrRead($startedPID,1) Then ConsoleWriteError(StderrRead($startedPID))
    Wend

    Func OnAutoItExit()
    ProcessClose($startedPID)
    EndFunc

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

    ; Send command to SciTE
    Func SendSciTE_Command($My_Hwnd, $Scite_hwnd, $sCmd)
    $sCmd = ":" & $My_Dec_Hwnd & ":" & $sCmd
    ;ConsoleWrite('-->' & $sCmd & @LF)
    Local $CmdStruct = DllStructCreate('Char[' & StringLen($sCmd) + 1 & ']')
    DllStructSetData($CmdStruct, 1, $sCmd)
    Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr')
    DllStructSetData($COPYDATA, 1, 1)
    DllStructSetData($COPYDATA, 2, StringLen($sCmd) + 1)
    DllStructSetData($COPYDATA, 3, DllStructGetPtr($CmdStruct))
    DllCall('User32.dll', 'None', 'SendMessage', 'HWnd', $Scite_hwnd, _
    'Int', $WM_COPYDATA, 'HWnd', $My_Hwnd, _
    'Ptr', DllStructGetPtr($COPYDATA))
    EndFunc ;==>SendSciTE_Command

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

    ; Received Data from SciTE
    Func MY_WM_COPYDATA($hWnd, $msg, $wParam, $lParam)
    Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr', $lParam)
    $SciTECmdLen = DllStructGetData($COPYDATA, 2)
    Local $CmdStruct = DllStructCreate('Char[255]', DllStructGetData($COPYDATA, 3))
    $SciTECmd = StringLeft(DllStructGetData($CmdStruct, 1), $SciTECmdLen)
    EndFunc ;==>MY_WM_COPYDATA

    [/autoit]


    muss nach
    .. \SciTE\RunDirect\RunDirect.au3
    gepackt werdem. Und folgende Einstellungen in der SciteUser.properties ergänzt:

    Diese liegt unter @UserProfileDir (meistens c:\ Dokumente und Einstellungen\DEIN USER\ ...

    Sollte die Datei nicht zu finden sein in Scite mal die Config öffnen und schließen - mit STRG+1.

    Code
    # 37 Run Without Save
    command.37.*="$(autoit3dir)\autoit3.exe" "$(SciteDefaultHome)\RunDirect\RunDirect.au3"
    command.37.*.au3="$(autoit3dir)\autoit3.exe" "$(FilePath)"
    command.name.37.*=Run Direct
    command.save.before.37.*=0
    command.mode.37.*=savebefore:no


    Es muss nur eine Frage beantwortet werden, ob zuvor gespeichert werden soll (leider)
    //Edit: An 3.2.12.0 angepasst.
    Außerdem wird jetzt BETA verwendet, wenn das Script mit
    ;#BETA
    anfängt oder irgendwi im Script folgendes steht:
    #AutoIt3Wrapper_Version=Beta

    Einmal editiert, zuletzt von progandy (23. Mai 2008 um 19:23)