1 oder 2 weitere Ordner als Include Quelle

  • Hallo zusammen,

    mein erster Post und gleiche eine wahrscheinlich einfache Frage und zwar lese ich hier schon einiger Zeit mit und bin dabei meine ersten Gehversuche mit Autoit zumachen, habe für meine Problemstellung schon eine oder andere UDF in Gebrauch (z.b. FF.au3 oder MathEX.au3)

    Nun bin ich aber nicht zufrieden diese in den normalen Autoit/include zutun und für jedes Projekt diese wieder ins Scriptverzeichnis zukopieren ist auch nicht elegant.

    Ich habe auch schon die Forensuche bemüht und dabei nur Eigene Funktionen zu ..\Include per Hardlink gefunden, was mir doch ein bisschen spanisch vorkommt (Hardlink und Windows? *schüttel*)

    Also weiter gesucht und tatsächlich in der deutschen Autoit-Hilfe folgendes gefunden:

    Spoiler anzeigen

    Es gibt einen besonderen Registrywert, namens "Include" welche in "HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt" erstellt wurde. Es sollte ein REG_SZ (Zeichenkette) Wert sein. Die Inhalte dieses Wertes sind durch ein Semikolon getrennte Verzeichnisse, welche zusätzlich zu den Standardordnern durchsucht werden sollten, wenn #include's im Skript angegeben wird.

    Nur meiner Registry im HKEY_CURRENT_USER\Software\AutoIt v3\ kein "Unter Ordner" AutoIt ?( nur
    AU3Info
    Aut2Exe
    Exe2Aut

    wurde das seit der Verfassung der Hilfe geändert oder bin ich nur betriebsblind?

    Einmal editiert, zuletzt von Hüpfer (16. Juni 2009 um 01:27)

  • Hallo Hüpfer!

    Erstmal danke, dass du meine UDF benutzt. :)

    Bei mir finde ich noch AutoUpdateIt, schätze, dass gehört zu "Check for Updates". Versuche doch einfach mal dne Schlüssel zu erstellen. Vielleicht verhält es sich so, dass wenn er keinen Schlüssel findet, einfach einen Standardwert übernimmt ?(

  • Moin-Moin

    Also ich habe auch meine Includes nicht alle auf HDD-C liegen, sondern im Ordner "P:\deutschland\AutoIT\Include"

    Damit sie gefunden werden, muß man einfach einmal folgendes Script ausführen, das dann den Ordner mit den "eigenen Include Dateien" in der Registry einträgt und so zur Verfügung stellt.

    Wenn dann die Include-Dateien beim nächsten PC-Updates alle aktuell sind, kopiere ich sie dann bei inaktivier "PC-Wächterfunktion" in das Include-Verzeichnis von AutoIt rüber, was jedoch nicht noitwendig ist. Nur so habe ich den Ordner "eigene Include Dateien" wieder leer und kann dann dort wieder neue rein kopieren um zu schauen welche ich wirklich regelmäßig benötige oder welche nur mal zum testen eines Scriptes notwendig waren.

    Spoiler anzeigen
    [autoit]


    SetIncludePaths("P:\deutschland\AutoIT\Include") ; hier anpassen !!!
    Exit
    Func SetIncludePaths($egoincludes)
    Local $tas = ""
    Local $inclu = RegRead("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "Include")
    Local $orginclu = RegRead("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "OrgInclude")
    If @error <> 0 Then
    RegWrite("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "OrgInclude", "REG_SZ", $inclu)
    $orginclu = $inclu
    EndIf
    If $orginclu <> "" Then $tas = ";"
    If $inclu <> $orginclu & $tas & $egoincludes Then
    RegWrite("HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt", "Include", "REG_SZ", $orginclu & $tas & $egoincludes)
    EndIf
    EndFunc

    [/autoit]

    Wenn man es richtig macht kann es auch fürt mehrere Ordner verwendet werden. Nur nicht zu viele, denn das ist dann sinnlos.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Man kann auch einfach im SciTE "Ctrl+1" drücken und bei "User Include Dir" den Pfad eintragen.

  • Oder dieses Skript verwenden ;) Da wird es nich einfacher.

    Spoiler anzeigen
    [autoit]

    #include<GUIListBox.au3>
    #include<ListBoxConstants.au3>
    #include<WindowsConstants.au3>
    Opt("GUIDataSeparatorChar", ";")
    Opt("GUIOnEventMode", 1)
    $RegKey = "HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt"
    $RegVal = "Include"

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

    $hMainGUI = GUICreate("UDF folders")
    GUISetOnEvent(-3,"_Exit")
    $List = GUICtrlCreateList("",10,10,380,340,BitOR($LBS_NOINTEGRALHEIGHT,$LBS_SORT, $WS_VSCROLL))
    $hList = GUICtrlGetHandle($List)
    GUICtrlSetData($List,RegRead($RegKey, $RegVal))

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

    $btnAdd = GUICtrlCreateButton("+", 290,350,50,20)
    GUICtrlSetOnEvent(-1,"_Add")
    $btnDel = GUICtrlCreateButton("-", 340,350,50,20)
    GUICtrlSetOnEvent(-1,"_Remove")

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

    $btnSave = GUICtrlCreateButton("&Speichern", 10,360,90,30)
    GUICtrlSetOnEvent(-1,"_Save")
    $btnReset = GUICtrlCreateButton("&Zurücksetzen", 100,360,90,30)
    GUICtrlSetOnEvent(-1,"_Reset")

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

    GUISetState()

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

    While 1
    Sleep(100)
    WEnd
    Func _Exit()
    Exit
    EndFunc
    Func _Add()
    Local $Pfad = FileSelectFolder("Ordner asuwählen, der von AutoIt nach UDFs durchsucht werden soll", "", 7, "", $hMainGUI)
    If @error Then Return
    If StringInStr($Pfad,";") Then Return MsgBox(48, 'UDF folders', "Konnte den Pfad nicht hinzufügen, da er ein Semikolon enthält")
    GUICtrlSetData($List,$Pfad)
    EndFunc
    Func _Remove()
    Local $Index = _GUICtrlListBox_GetCurSel($hList)
    If $Index>-1 Then
    If MsgBox(36, 'UDF folders', "Soll der Pfad wirklich gelöscht werden?"&@CRLF & _GUICtrlListBox_GetText($hList,$Index)) = 6 Then
    _GUICtrlListBox_DeleteString($hList, $Index)
    EndIf
    EndIf
    EndFunc
    Func _Save()
    RegWrite($RegKey, $RegVal, "REG_SZ", _ListGetItemString($hList,";"))
    MsgBox(64, 'UDF folders', "Änderungen gespeichert", 1)
    EndFunc
    Func _Reset()
    If MsgBox(36, 'UDF folders', "Wirklich zurücksetzen? Alle Änderungen gehen dann verloren.")=6 Then
    GUICtrlSetData($List,"")
    GUICtrlSetData($List,RegRead($RegKey, $RegVal))
    EndIf
    EndFunc
    Func _ListGetItemString($hList, $Separator="")
    If $Separator = "" Then $Separator = Opt("GUIDataSeparatorChar")
    Local $text = ""
    For $i=0 To _GUICtrlListBox_GetCount($hList)-1
    $text &= _GUICtrlListBox_GetText($hList,$i) & $Separator
    Next
    Return StringTrimRight($text,StringLen($Separator))
    EndFunc

    [/autoit]