Includes in Datei einbinden

  • Morgen allerseits,

    Brauche dringend eure Hilfe :

    Meine test.au3 braucht bestimmte includes zb #include <File.au3>.
    Ich möchte nun aber das der Code von #include <File.au3> in die test.au3 reingeschrieben wird.
    ich weiß das ich hiermit die Funktion einer include aufhebe, allerdings ist das von höchster Priorität und unumgänglich ( fragt nicht warum :O)

    Gruß
    Silverlight

  • Soweit ich weis werden die einzelnen Funktionen eines Includes beim Compilieren "reinkopiert" das #include ist also nur ein "Platzhalter" der den Compiler darauf hinweist welche Funktionen aus welchen Dateien "reinkopiert" werden müssen.
    Wie man die Includes anders reinbekommt:
    Icludes einzeln öffnen und benötigte Funktionen selbst in die .au3 kopieren.
    Oder
    Script Kompilieren und wieder Dekompilieren. (Zum Dekompileren sag ich aber sonst nichts weiter)

    Einmal editiert, zuletzt von Molaynox (20. Februar 2011 um 10:51)

  • Wie Molaynox schon schrieb, während des Kompilierens wird der gesammte Inhalt der inkludierten Datei geholt und anstelle der #include<> Anweisung eingefügt. Also genau das was du möchtest.

    Das mit dem dekompilieren hast du überlesen, das ist illegal!

  • Script Kompilieren und wieder Dekompilieren. (Zum Dekompileren sag ich aber sonst nichts weiter)


    ist auch besser so und es ist lizenztechnisch verboten auch für eigene Skripte.

    [eingefügt]

    Zitat

    Is there a 3rd-party decompiler?

    Yes. There is software in existence which can decompile all versions of AutoIt. This software is in direct violation of the AutoIt license agreement. Creation or use of such software may be a violation of the law depending on your local laws. Do not use it.

    Quelle: http://www.autoitscript.com/wiki/Decompiling_FAQ
    [/eingefügt]

    @Silverlight, benutze den Compiler, mit folgenden Einstellungen auf dem Tab Obfuscator:autoit.de/wcf/attachment/12641/

    du erhälst dann ein File Name_obfuscated.au3 (dieses wird auch compiliert) und sieht dann z.B. so aus:

    2GUIsOnEvent_obfuscated.au3
    [autoit]

    Global Const $GUI_EVENT_CLOSE = -3
    Global Const $GUI_DOCKLEFT = 0x0002
    Global Const $GUI_DOCKTOP = 0x0020
    Global Const $GUI_DOCKSIZE = 0x0300
    Global Const $WS_MAXIMIZEBOX = 0x00010000
    Global Const $WS_MINIMIZEBOX = 0x00020000
    Global Const $WS_SIZEBOX = 0x00040000
    Global Const $WS_SYSMENU = 0x00080000
    Global Const $WS_CAPTION = 0x00C00000
    Global Const $WS_POPUP = 0x80000000
    Global Const $GUI_SS_DEFAULT_GUI = BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU)
    Opt('GUIOnEventMode', 1)
    $cidGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $cidbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_CallGui2')
    $cidbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_RunICQ')
    $cidbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_End')
    $cidGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $cidGui1)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_BackToGui1')
    $cidButton1 = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_MsgBox')
    $cidButton2 = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_BackToGui1')
    $cidbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_End')
    GUISetState(@SW_SHOW, $cidGui1)
    While 1
    Sleep(1000)
    WEnd
    Func _end()
    GUIDelete($cidGui2)
    GUIDelete($cidGui1)
    Exit
    EndFunc
    Func _CallGui2()
    GUISetState(@SW_HIDE, $cidGui1)
    GUISetState(@SW_SHOW, $cidGui2)
    EndFunc
    Func _RunICQ()
    MsgBox(0, "", "Jetzt würde ICQ gestartet")
    EndFunc
    Func _BackToGui1()
    GUISetState(@SW_SHOW, $cidGui1)
    GUISetState(@SW_HIDE, $cidGui2)
    EndFunc
    Func _MsgBox()
    MsgBox(0, 'Test', 'Test', 0, $cidGui2)
    EndFunc

    [/autoit]

    Ausgangsskript:

    2GUIsOnEvent.au3
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/striponly
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Opt('GUIOnEventMode', 1) ;schaltet den OnEvent-Modus ein

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

    $cidGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    ;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $cidGui1 gespeichert
    ;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $cidbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_CallGui2')
    ;Beim Klicken des Buttons wird die Funktion _CallGui2 aufgerufen

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

    $cidbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "ICQ" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_RunICQ')
    ;Beim Klicken des Buttons wird die Funktion _RunICQ aufgerufen

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

    $cidbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_End')
    ;Beim Klicken des Buttons wird die Funktion _END aufgerufen

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

    $cidGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $cidGui1)
    ;erzeugt eine GUI als Child von Gui1, die zurückgebebene ID wird in der Variablen $cidGui2 gespeichert
    GUISetOnEvent($GUI_EVENT_CLOSE, '_BackToGui1')

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

    $cidButton1 = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "MsgBox" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_MsgBox')
    ;Beim Klicken des Buttons wird die Funktion _MsgBox aufgerufen

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

    $cidButton2 = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "zurück" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_BackToGui1')
    ;Beim Klicken des Buttons wird die Funktion _BackToGui1 aufgerufen

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

    $cidbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_End')
    ;Beim Klicken des Buttons wird die Funktion _END aufgerufen
    GUISetState(@SW_SHOW, $cidGui1)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func _end()
    GUIDelete($cidGui2)
    GUIDelete($cidGui1)
    Exit
    EndFunc ;==>_end

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

    Func _CallGui2()
    GUISetState(@SW_HIDE, $cidGui1) ;entweder so
    ;GUISetState(@SW_DISABLE, $cidGui1) ;oder so dann bleibt die 1. Gui sichtbar ist aber nicht aktriv
    GUISetState(@SW_SHOW, $cidGui2)
    EndFunc ;==>_CallGui2

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

    Func _RunICQ()
    MsgBox(0, "", "Jetzt würde ICQ gestartet")
    ;Run("C:\Program Files\ICQ7.0\ICQ.exe")
    EndFunc ;==>_RunICQ

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

    Func _BackToGui1()
    GUISetState(@SW_SHOW, $cidGui1) ;nur nötig falls Gui versteckt
    ;GUISetState(@SW_ENABLE, $cidGui1) ;nur nötig falls Gui DISABLEd
    GUISetState(@SW_HIDE, $cidGui2)
    EndFunc ;==>_BackToGui1

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

    Func _MsgBox()
    MsgBox(0, 'Test', 'Test', 0, $cidGui2)
    EndFunc ;==>_MsgBox

    [/autoit]

    wobei ich nicht verstehe, warum du alles in einem File benötigst

    Edit: ohforf, nein die Lizenzbedingungen von AutoIt muss jeder einhalten. AutoItScript,com hat deshalb dazu ganz strenge Regeln:

    Zitat

    What happens if I use the 3rd-party decompiler?

    If you mention you have used a 3rd-party decompiler you will be permanently blocked from the forum and issue tracker. You may be blocked for any of the following:

    * Admitting you have decompiled your own script with a 3rd-party decompiler.
    * Admitting you have decompiled another user's script with a 3rd-party decompiler.
    * Posting any script that has been decompiled by a 3rd-party decompiler.

    Quelle: http://www.autoitscript.com/wiki/Decompiling_FAQ und jetzt bitte keine weitere Diskussion dazu,

    mfg autoBert

  • DFPWare:
    Wenn du AutoIt installiert hast, dann mach mal Rechtsklick auf eine au3 und dann "Compile with options", dann kommt dieses Fenster. Sonst must du "aut2exe.exe" mit einem Parameter aufrufen (weiß gerade nicht welcher).

    Nur keine Hektik - das Leben ist stressig genug

  • Wenn ich euch nicht hätte :D
    Danke autoBert, allerdings ist der code bei mir dann "obcusfacted" und nicht wie bei dir "normal".
    Ich möchte die Datei aber noch editieren können, dazu ist eine "leserliche" Form nötig :D

    /edit Ok hat doch geklappt, danke nochmal :)

  • DFPWare:
    Was man nicht alles tut :D
    Füg das in den Editor ein:


    Und speichere als "AutoIt.reg" ab. Einfach doppelklick auf die Datei und dann mal PC neustarten. Du kannst dann die Datei wieder löschen.
    MfG AntiSpeed

    Nur keine Hektik - das Leben ist stressig genug

  • Solltest du ein 64bit Windows verwenden, dann musst du die Pfade anpassen. AutoIt liegt dann in "C:\Program Files (x86)\AutoIt3\

    Spoiler anzeigen
  • ne hat doch geklappt warum auch immer :D

    aber jetzt sehen die skripte so aus:

    [Blockierte Grafik: http://www.bilder-hochladen.net/files/hdhc-3.jpg]

    ist das wegen der neuen autoit version oder wegen dem registry zeug?=(

    und was wichtiger ist, wie bekomm ich das wieder normal?=)

    übrigens die beiden einträge sind da aber funktionieren nicht X(

  • nein ich habe grade zum 3. mal rebootet

    ich versuch jetzt mal autoit neu zu installieren;)


    jap die neuinstallation hat wenigstens mein icon wiedergebracht;)

    jetzt lösche ich die beiden kaputten einträge einfach wieder per hand

    aber jetzt weiß ich immer noch nicht wie ich an das "compile with options" komme-.-