UDF Installer

  • hey autoitler :)
    Wer kennt es nicht: man will etwas programmieren und weiß man hat eine udf dafür, aber man hat den namen vergessen... nachdem man dann 10 minuten den include-ordner durchsucht hat und wiederum die udf nach der passenden funktion sind bereits 15 minuten vergangen. Dann hat man sich den Funkionsnamen rauskopiert und ins script eingefügt... script wird gestartet und da kommt der fehler: "called with wrong number of args" X( man hat natürlich die udf schon wieder geschlossen und hat keinen plan welcher parameter fehlt oder zuviel ist ... sowas muss ja nicht sein^^

    deshalb stelle ich auch hier im autoit forum mein UDF installer vor. Man kann mit ihr sehr schnell und einfach UDFs erstellen und importieren. Wo liegt jetzt der vorteil fragt ihr euch? ganz einfach: der udf-installer hat eine offline-datenbank der udfs, wo euch alle angezeigt werden (in nächster version auch unterteil in standart & nicht-standart udfs), somit habt ihr immer alle auf einen Blick. Zweiter Vorteil ist, dass es eine online-datenbank gibt (momentan noch nicht implementiert, aber die nächste version wird diesen monat noch fertig^^). In dieser Datenbank könnt ihr eure udfs veröffentlichen und udfs von anderen downloaden, bewerten und kommentieren. Ein weiterer Vorteil ist, dass die UDF einen simplen Hash-schutz bekommt. Somit werdet ihr darauf hingewiesen, wenn an der udf etwas verändert wurde. Der letzte und entscheidenste Vorteil ist aber wahrscheinlich, dass eure UDF gehighlighted werden (wie die standartudfs auch) und dass euch zu euren Befehlen ein Tooltip angezeigt wird (ebenfalls wie bei den normalen Funktionen!). Die Tooltips können individuell gestalltet werden =) Es werden natürlich noch mehr Funktionen geboten, aber das solltet ihr lieber selbst herausfinden :)


    Zitat von AMrK

    Bitte beachtet, dass das Konzept und die Funktionen (insbesondere die Funktionen Au3Install, Au3GetFunctions, Au3GetHash, Au3CreateInformation, Au3GetInformation, UpdateGetVersion und vorallem die _TCPDownload -Funktion) mein Eigentum sind und nicht außerhalb des UDF-Installers ohne meine Erlaubnis genutzt werden dürfen!

    Source 1.1
    [autoit]

    #NoTrayIcon
    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=icon.ico
    #AutoIt3Wrapper_Outfile=UDF Installer.exe
    #AutoIt3Wrapper_Res_Comment=Erstellt und installiert UDFs
    #AutoIt3Wrapper_Res_Description=By AMrK
    #AutoIt3Wrapper_Res_Fileversion=1.1
    #AutoIt3Wrapper_Res_LegalCopyright=Alexander 'AMRK' Mattis
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <String.au3>
    #include <GuiComboBox.au3>
    #include <GuiListBox.au3>
    #include <Array.au3>
    #include <IE.au3>

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

    If $CmdLine[0] = 1 Then
    If StringTrimLeft($CmdLine[1], 15) = 'update/' Then
    UpdateGetVersion()
    ElseIf StringTrimLeft($CmdLine[1], 15) = 'upload/' Then
    UploadUDF()
    EndIf
    Exit
    EndIf

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

    DirRemove(@TempDir & '\udfinstaller_update', 1)

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

    #compiler_plugin_funcs = MD5Hash

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

    Opt('GUIOnEventMode', 1)
    Opt('GUICloseOnESC', 0)
    Opt('MustDeclareVars', 1)

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

    Global $MD5Plugin = PluginOpen(@ScriptDir & "\MD5Hash.dll")
    Global $oNews, $oSammlung, $Form, $Tabs, $install_searchfile, $install_path, $install_autor, $install_version, $install_datum, $install_copyright
    Global $create_about, $create_autor, $create_copyright, $create_datum, $create_path, $create_searchfile, $create_version, $install_about, $sammlung_offline_liste
    Global $create_installlist, $create_notinstalllist, $create_add, $create_remove, $create_tooltip, $create_export, $Gui_LastListBox, $install_start
    Global $create_Tooltips[1], $create_nTooltips[1], $create_FilePath = "", $create_FileName = "", $install_Funcs[1], $install_tools[1], $create_tooltip_s
    Global $dir_install, $dir_scite, $dir_properties, $dir_api, $dir_include, $install_FilePath, $sammlung_offline, $install_filehash, $install_functions
    Global $file_api, $file_keywords, $bool_firstrun

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

    Const $iBiuld = 2

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

    RegWrite('HKEY_CLASSES_ROOT\udfinstaller', '', 'REG_SZ', 'URL:udfinstaller protocol')
    RegWrite('HKEY_CLASSES_ROOT\udfinstaller', 'URL Protocol', 'REG_SZ', '')
    RegWrite('HKEY_CLASSES_ROOT\udfinstaller\DefaultIcon', '', 'REG_SZ', @ScriptFullPath)
    RegWrite('HKEY_CLASSES_ROOT\udfinstaller\Shell\Open\Command', '', 'REG_SZ', '"' & @ScriptFullPath & '" %1')

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

    ProgressOn("Starte UDF-Installer", "Überprüfe Updates", "Bitte warten...")
    UpdateGetVersion()

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

    ProgressSet(50, "Bitte warten...", "Starte ActiveX")
    $oNews = _IECreateEmbedded()
    $oSammlung = _IECreateEmbedded()

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

    ProgressSet(80, "Bitte warten...", "Initialisiere User-Interface")
    $Form = GUICreate("UDF Installer", 605, 406)

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

    $Tabs = GUICtrlCreateTab(2, 5, 600, 400, $TCS_BUTTONS)
    GUICtrlCreateTabItem("News")
    GUICtrlCreateObj($oNews, 4, 30, 596, 370)
    GuiSetActiveX($oNews, 1)

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

    GUICtrlCreateTabItem("UDF Installieren")
    $install_searchfile = GUICtrlCreatePic(@ScriptDir & '\data\search.jpg', 5, 35, 20, 20)
    $install_path = GUICtrlCreateCombo("", 30, 35, 567, 20)
    GUICtrlCreateLabel("Autor:", 10, 63, 70, 20)
    GUICtrlCreateLabel("Version:", 10, 88, 70, 20)
    GUICtrlCreateLabel("Datum:", 10, 113, 70, 20)
    GUICtrlCreateLabel("Copyright:", 10, 138, 70, 20)
    GUICtrlCreateLabel("Beschreibung:", 10, 163, 70, 20)
    GUICtrlCreateLabel("File-Hash:", 10, 188, 70, 20)
    GUICtrlCreateLabel("Die UDF beinhaltet folgende Funktionen:", 200, 215, 300, 20)
    $install_autor = GUICtrlCreateInput("", 80, 60, 517, 20, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $install_version = GUICtrlCreateInput("", 80, 85, 517, 20, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $install_datum = GUICtrlCreateInput("", 80, 110, 517, 20, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $install_copyright = GUICtrlCreateInput("", 80, 135, 517, 20, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $install_about = GUICtrlCreateInput("", 80, 160, 517, 20, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $install_filehash = GUICtrlCreateInput("", 80, 186, 517, 20, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $install_functions = GUICtrlCreateList("", 10, 235, 587, 100, $WS_BORDER)
    $install_start = GUICtrlCreateButton("Installieren", 252, 350, 100, 25)

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

    GUICtrlCreateTabItem("UDF Erstellen")
    $create_searchfile = GUICtrlCreatePic(@ScriptDir & '\data\search.jpg', 5, 35, 20, 20)
    GUICtrlCreateLabel("Autor:", 10, 63, 70, 20)
    GUICtrlCreateLabel("Version:", 10, 88, 70, 20)
    GUICtrlCreateLabel("Datum:", 10, 113, 70, 20)
    GUICtrlCreateLabel("Copyright:", 10, 138, 70, 20)
    GUICtrlCreateLabel("Beschreibung:", 10, 163, 70, 20)
    GUICtrlCreateLabel("Installieren:", 30, 200, 100, 20)
    GUICtrlCreateLabel("Nicht Installieren:", 320, 200, 100, 20)
    GUICtrlCreateLabel("Scite Funktions-Tooltip:", 10, 335, 120, 20)
    GUICtrlCreateLabel("Bei der Installation wird die komplette UDF kopiert!" & _
    " Diese Auswahl bestimmt lediglich, welche Funktionen später in Scite sichtbar sind...", 20, 320, 570, 10)
    GUICtrlSetFont(-1, 7)
    $create_path = GUICtrlCreateCombo("", 30, 35, 567, 20)
    $create_autor = GUICtrlCreateInput("", 80, 60, 517, 20)
    $create_version = GUICtrlCreateInput("", 80, 85, 517, 20)
    $create_datum = GUICtrlCreateInput("", 80, 110, 517, 20)
    $create_copyright = GUICtrlCreateInput("", 80, 135, 517, 20)
    $create_about = GUICtrlCreateInput("", 80, 160, 517, 20)
    $create_installlist = GUICtrlCreateList("", 30, 220, 250, 100)
    $create_notinstalllist = GUICtrlCreateList("", 320, 220, 250, 100)
    $create_add = GUICtrlCreateButton("<=", 290, 240, 20, 20)
    $create_remove = GUICtrlCreateButton("=>", 290, 270, 20, 20)
    $create_tooltip = GUICtrlCreateInput("", 10, 350, 505, 20)
    $create_tooltip_s = GUICtrlCreateButton("Speichern", 520, 350, 75, 20)
    $create_export = GUICtrlCreateButton("Exportieren", 252, 375, 100, 25)

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

    $sammlung_offline = GUICtrlCreateTabItem("UDF Eigene Sammlung")
    $sammlung_offline_liste = GUICtrlCreateList("", 7, 35, 585, 340)

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

    GUICtrlCreateTabItem("UDF Online Sammlung")
    GUICtrlCreateObj($oSammlung, 4, 30, 596, 370)
    GuiSetActiveX($oSammlung, 2)
    GUICtrlCreateTabItem("")

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

    ProgressOff()
    GUISetState(@SW_SHOW)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, 'GuiTerminate')
    GUICtrlSetOnEvent($install_searchfile, 'GuiFileOpen')
    GUICtrlSetOnEvent($create_searchfile, 'GuiFileOpen')
    GUICtrlSetOnEvent($create_installlist, 'GuiFunctionTooltip')
    GUICtrlSetOnEvent($create_notinstalllist, 'GuiFunctionTooltip')
    GUICtrlSetOnEvent($create_add, 'GuiFunctionAdd')
    GUICtrlSetOnEvent($create_remove, 'GuiFunctionRemove')
    GUICtrlSetOnEvent($create_tooltip_s, 'GuiSaveTooltip')
    GUICtrlSetOnEvent($create_export, 'GuiExport')
    GUICtrlSetOnEvent($install_start, 'Au3Install')
    GUICtrlSetOnEvent($Tabs, 'GuiRefreshSammlung')

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    $bool_firstrun = IniRead(@ScriptDir & '\settings.ini', 'udfinstaller', 'firstrun', 1)
    If $bool_firstrun = 1 Then
    If FileExists(@ScriptDir & '\settings.ini') Then FileDelete(@ScriptDir & '\settings.ini')
    IniWrite(@ScriptDir & '\settings.ini', 'udfinstaller', 'firstrun', 0)
    EndIf
    $dir_install = IniRead(@ScriptDir & '\settings.ini', 'autoit', 'isntalldir', "")
    If $dir_install = "" Then
    If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_VISTA" Then
    $dir_install = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir')
    Else
    $dir_install = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AutoIt v3\AutoIt', 'InstallDir')
    EndIf
    If @error Or DirGetSize($dir_install) = -1 Then
    If (IniRead(@ScriptDir & '\settings.ini', 'autoit', 'isntalldir', '') <> '') And (DirGetSize(IniRead(@ScriptDir & '\settings.ini', 'autoit', 'isntalldir', '')) > -1) Then
    $dir_install = IniRead(@ScriptDir & '\settings.ini', 'autoit', 'isntalldir', '')
    Else
    $dir_install = FileSelectFolder('Bitte AutoIt-Ordner auswählen...', '', 2)
    If @error Then GUIInstallError(7)
    EndIf
    EndIf
    If MsgBox(270404, "Bestätigung", "Befindet sich der AutoIt 3 Ordner unter folgendem Pfad: " & $dir_install & "?") = 7 Then
    $dir_install = FileSelectFolder('Bitte AutoIt-Ordner auswählen...', '', 2)
    If @error Then GUIInstallError(7)
    EndIf
    IniWrite(@ScriptDir & '\settings.ini', 'autoit', 'isntalldir', $dir_install)
    EndIf

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

    $dir_scite = $dir_install & '\SciTE'
    If DirGetSize($dir_scite) = -1 Then
    GUIInstallError(1)
    EndIf
    $dir_properties = $dir_scite & '\Properties'
    If DirGetSize($dir_properties) = -1 Then
    GUIInstallError(2)
    EndIf
    $dir_api = $dir_scite & '\api'
    If DirGetSize($dir_properties) = -1 Then
    GUIInstallError(3)
    EndIf
    $dir_include = $dir_install & '\Include'
    If DirGetSize($dir_include) = -1 Then
    GUIInstallError(4)
    EndIf
    $file_api = $dir_api & '\au3.api'
    If FileGetSize($file_api) = -1 Then
    GUIInstallError(5)
    EndIf
    $file_keywords = $dir_properties & '\au3.keywords.properties'
    If FileGetSize($file_api) = -1 Then
    GUIInstallError(6)
    EndIf

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

    While 1
    Sleep(250)
    WEnd

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

    Func UploadUDF()
    Local $sFile, $iSocket, $sPost, $sPacket, $sHeader
    MsgBox(270384, "Fehler", "Diese Funktion ist in dieser Version noch nicht möglich!")
    #cs
    $sFile = FileOpenDialog("Bitte suche ein Au3-Script...", "", "AutoIt 3 Script (*.au3)", 3)
    If Not @error Then
    $sPost = ''
    $sPacket = 'POST /udfinstaller/upload.php HTTP/1.1' & @CRLF & _
    'Host: blackscreen.bl.funpic.de' & @CRLF & _
    'User-Agent: udfinstaller' & @CRLF & _
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF & _
    'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF & _
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF & _
    'Keep-Alive: 300' & @CRLF & _
    'Connection: keep-alive' & @CRLF & _
    'Cookie: cken=1261409604' & @CRLF & _
    'Content-Type: multipart/form-data; boundary=---------------------------281452328116827' & @CRLF & _
    'Content-Length: ' & StringLen($sPost) & @CRLF & @CRLF & $sPost

    TCPStartup()
    $iSocket = TCPConnect(TCPNameToIP('http://blackscreen.bl.funpic.de'),80)
    TCPSend($iSocket, $sPacket)
    Do
    $sHeader = TCPRecv($iSocket, 512)
    Until $sHeader <> ''
    TCPCloseSocket($iSocket)
    TCPShutdown()
    MsgBox(0,"", $sHeader)
    EndIf
    #ce
    EndFunc ;==>UploadUDF

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

    Func UpdateGetVersion()
    If Ping('blackscreen.bl.funpic.de') Then
    Local $iSocket, $sPacket, $sHeader, $iLen, $sFile, $sPath, $aPath, $hFile, $sIp, $sHost
    $sPacket = 'GET /udfinstaller/update.ini HTTP/1.1' & @CRLF & _
    'Host: blackscreen.bl.funpic.de' & @CRLF & _
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)' & @CRLF & _
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF & _
    'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF & _
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF & _
    'Keep-Alive: 300' & @CRLF & _
    'Connection: keep-alive' & @CRLF & @CRLF
    TCPStartup()
    $iSocket = TCPConnect(TCPNameToIP('http://blackscreen.bl.funpic.de'), 80)
    If TCPSend($iSocket, $sPacket) Then
    Do
    $sHeader = TCPRecv($iSocket, 512)
    Until $sHeader <> ''
    Do
    $sHeader &= TCPRecv($iSocket, 512)
    Until StringInStr($sHeader, @CRLF & @CRLF)
    $sFile = StringTrimLeft($sHeader, StringInStr($sHeader, @CRLF & @CRLF, 1) + 3)
    $sHeader = StringLeft($sHeader, StringInStr($sHeader, @CRLF & @CRLF, 1) + 3)
    $iLen = _StringBetween($sHeader, 'Content-Length: ', @CRLF, 1)
    If Not IsArray($iLen) Then
    MsgBox(270384, "Fehler", "Es konnte keine Verbindung zum Updateserver hergestellt werden!")
    Return -1
    EndIf
    Do
    $sFile &= TCPRecv($iSocket, 512)
    Until StringLen($sFile) >= $iLen[0]
    EndIf
    TCPCloseSocket($iSocket)
    TCPShutdown()
    If FileExists(@TempDir & '\udfi_update.ini') Then FileDelete(@TempDir & '\udfi_update.ini')
    FileWrite(@TempDir & '\udfi_update.ini', $sFile)
    If IniRead(@TempDir & '\udfi_update.ini', 'update', 'build', 1) <> $iBiuld Then
    ProgressOff()
    ProgressOn("Update", "Downloade Datei...", IniRead(@TempDir & '\udfi_update.ini', 'update', 'version', 1) & " (" & IniRead(@TempDir & '\udfi_update.ini', 'update', 'date', 1) & ")")

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

    If FileExists(@TempDir & '\udf_installer.upd') Then FileDelete(@TempDir & '\udf_installer.upd')
    $sPath = IniRead(@TempDir & '\udfi_update.ini', 'update', 'path', "")
    $sIp = IniRead(@TempDir & '\udfi_update.ini', 'update', 'ip', "")
    $sHost = IniRead(@TempDir & '\udfi_update.ini', 'update', 'host', "")

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

    If ($sPath = "") Or ($sIp = "") Or ($sHost = "") Then GUIInstallError(8)

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

    If StringLower(StringLeft($sPath, 7)) <> 'http://' Then $sPath = 'http://' & $sPath

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

    DirRemove(@TempDir & '\udfinstaller_update', 1)
    DirCreate(@TempDir & '\udfinstaller_update')
    If FileExists(@TempDir & '\udf_installer.upd') Then FileDelete(@TempDir & '\udf_installer.upd')

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

    _TCPDownload($sIp, $sHost, $sPath, @TempDir & '\udf_installer.upd')

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

    If Not FileExists(@TempDir & '\7z.exe') Then FileInstall("C:\Programme\7-Zip\7z.exe", @TempDir & '\7z.exe')
    RunWait('"' & @TempDir & '\7z.exe" e "' & @TempDir & '\udf_installer.upd"', @TempDir & '\udfinstaller_update', @SW_HIDE)
    Run(@TempDir & '\udfinstaller_update\setup.exe "' & @ScriptFullPath & '"')
    Exit
    EndIf
    Else
    MsgBox(270384, "Fehler", "Es konnte keine Verbindung zum Updateserver hergestellt werden!")
    EndIf
    EndFunc ;==>UpdateGetVersion

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $iCmd
    $iCmd = BitShift($iwParam, 16)
    If $ilParam = GUICtrlGetHandle($install_path) Then
    If $iCmd = $CBN_EDITCHANGE Then GuiComboAutocomplete($install_path)
    ElseIf $ilParam = GUICtrlGetHandle($create_path) Then
    If $iCmd = $CBN_EDITCHANGE Then GuiComboAutocomplete($create_path)
    EndIf
    EndFunc ;==>WM_COMMAND

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

    Func GuiRefreshSammlung()
    If GUICtrlRead(@GUI_CtrlId) = 3 Then
    Local $hFile, $i, $sLine
    For $i = 1 To _GUICtrlListBox_GetCount($sammlung_offline_liste)
    _GUICtrlListBox_DeleteString($sammlung_offline_liste, 0)
    Next
    $hFile = FileFindFirstFile($dir_include & '\*.au3')
    _GUICtrlListBox_BeginUpdate($sammlung_offline_liste)
    While 1
    $sLine = FileFindNextFile($hFile)
    If @error Then ExitLoop
    _GUICtrlListBox_AddString($sammlung_offline_liste, $sLine)
    WEnd
    _GUICtrlListBox_EndUpdate($sammlung_offline_liste)
    FileClose($hFile)
    EndIf
    EndFunc ;==>GuiRefreshSammlung

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

    Func GuiComboAutocomplete($iIdent)
    _GUICtrlComboBox_AutoComplete($iIdent)
    EndFunc ;==>GuiComboAutocomplete

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

    Func GuiFunctionTooltip()
    If @GUI_CtrlId = $create_installlist Then
    GUICtrlSetData($create_tooltip, $create_Tooltips[_GUICtrlListBox_GetCurSel(@GUI_CtrlId)])
    Else
    GUICtrlSetData($create_tooltip, $create_nTooltips[_GUICtrlListBox_GetCurSel(@GUI_CtrlId) + 1])
    EndIf
    $Gui_LastListBox = @GUI_CtrlId
    EndFunc ;==>GuiFunctionTooltip

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

    Func GuiFunctionRemove()
    Local $iItem
    $iItem = _GUICtrlListBox_GetCurSel($create_installlist)
    If $iItem <> -1 Then
    _ArrayAdd($create_nTooltips, $create_Tooltips[$iItem])
    _ArrayDelete($create_Tooltips, $iItem)
    _GUICtrlListBox_AddString($create_notinstalllist, _GUICtrlListBox_GetText($create_installlist, $iItem))
    _GUICtrlListBox_DeleteString($create_installlist, $iItem)
    EndIf
    EndFunc ;==>GuiFunctionRemove

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

    Func GuiFunctionAdd()
    Local $iItem
    $iItem = _GUICtrlListBox_GetCurSel($create_notinstalllist)
    If $iItem <> -1 Then
    _ArrayAdd($create_Tooltips, $create_nTooltips[$iItem + 1])
    _ArrayDelete($create_nTooltips, $iItem + 1)
    _GUICtrlListBox_AddString($create_installlist, _GUICtrlListBox_GetText($create_notinstalllist, $iItem))
    _GUICtrlListBox_DeleteString($create_notinstalllist, $iItem)
    EndIf
    EndFunc ;==>GuiFunctionAdd

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

    Func GuiSaveTooltip()
    If $Gui_LastListBox = $create_installlist Then
    $create_Tooltips[_GUICtrlListBox_GetCurSel($create_installlist)] = GUICtrlRead($create_tooltip)
    Else
    $create_nTooltips[_GUICtrlListBox_GetCurSel($create_notinstalllist) + 1] = GUICtrlRead($create_tooltip)
    EndIf
    EndFunc ;==>GuiSaveTooltip

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

    Func GuiExport()
    Local $sSaveDialog, $hFile, $sFile, $sInformation
    If StringReplace(GUICtrlRead($create_about), " ", "") = "" Then GUICtrlSetData($create_about, 'Keine Angaben')
    If StringReplace(GUICtrlRead($create_autor), " ", "") = "" Then GUICtrlSetData($create_autor, 'Keine Angaben')
    If StringReplace(GUICtrlRead($create_copyright), " ", "") = "" Then GUICtrlSetData($create_copyright, 'Keine Angaben')
    If StringReplace(GUICtrlRead($create_datum), " ", "") = "" Then GUICtrlSetData($create_datum, 'Keine Angaben')
    If StringReplace(GUICtrlRead($create_version), " ", "") = "" Then GUICtrlSetData($create_version, 'Keine Angaben')
    $sSaveDialog = FileSaveDialog("Speichern unter...", "", "Exportierte UDF (*.au3)", 18, $create_FileName)
    If (Not @error) And $sSaveDialog <> "" Then
    $sInformation = Au3CreateInformation($create_FilePath)
    $hFile = FileOpen($create_FilePath, 0)
    $sFile = FileRead($hFile)
    FileClose($hFile)
    If FileExists($sSaveDialog) Then FileDelete($sSaveDialog)
    $hFile = FileOpen($sSaveDialog, 1)
    FileWrite($hFile, $sInformation & $sFile)
    FileClose($hFile)
    MsgBox(270400, "Fertig", "Die UDF wurde erfolgreich exportiert")
    EndIf
    EndFunc ;==>GuiExport

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

    Func GuiFileOpen()
    Local $sPath, $sFileHash, $sFuncList, $sFunctions, $i, $sScriptHash, $iFunctions
    If @GUI_CtrlId = $install_searchfile Then
    $sPath = FileOpenDialog("Bitte suche ein Au3-Script...", "", "AutoIt 3 Script (*.au3)", 3)
    If (Not @error) And ($sPath <> "") Then
    ProgressOn("Öffne UDF...", "Bitte warten")
    $install_FilePath = $sPath
    _GUICtrlComboBox_BeginUpdate($install_path)
    If _GUICtrlComboBox_SelectString($install_path, $sPath) <> -1 Then
    _GUICtrlComboBox_SetCurSel($install_path, _GUICtrlComboBox_SelectString($install_path, $sPath))
    Else
    _GUICtrlComboBox_SetCurSel($install_path, _GUICtrlComboBox_AddString($install_path, $sPath))
    EndIf
    _GUICtrlComboBox_EndUpdate($install_path)
    For $i = 1 To _GUICtrlListBox_GetCount($install_functions)
    _GUICtrlListBox_DeleteString($install_functions, 0)
    Next
    If Au3GetInformation($sPath, 'author') <> -1 Then
    GUICtrlSetData($install_autor, Au3GetInformation($sPath, 'author'))
    GUICtrlSetData($install_version, Au3GetInformation($sPath, 'version'))
    GUICtrlSetData($install_datum, Au3GetInformation($sPath, 'date'))
    GUICtrlSetData($install_copyright, Au3GetInformation($sPath, 'copyright'))
    GUICtrlSetData($install_about, Au3GetInformation($sPath, 'about'))
    $iFunctions = Au3GetInformation($sPath, 'functions')
    ReDim $install_Funcs[$iFunctions]
    ReDim $install_tools[$iFunctions]
    _GUICtrlListBox_BeginUpdate($install_functions)
    For $i = 1 To $iFunctions
    $install_Funcs[$i - 1] = Au3GetInformation($sPath, 'func' & $i)
    $install_tools[$i - 1] = Au3GetInformation($sPath, 'tool' & $i)
    _GUICtrlListBox_AddString($install_functions, $install_Funcs[$i - 1])
    Next
    _GUICtrlListBox_EndUpdate($install_functions)
    $sFileHash = Au3GetInformation($sPath, 'filehash')
    If $sFileHash <> "" Then
    $sScriptHash = Au3GetHash($sPath)
    If $sScriptHash <> $sFileHash Then
    GUICtrlSetData($install_filehash, 'Info Hash: ' & $sFileHash & ' Wirklicher Hash: ' & $sScriptHash)
    MsgBox(270352, "Wichtige Warnung", "Achtung: Die ausgewählte Datei wurde nach dem erstellen mit UDF-Installer verändert! Dies kann zufolge haben, dass das Skript nicht mehr den beschriebenen Inhalt enthällt. Er enthällt nöglicherweise schädigende Daten oder ein Script, welches gegen das Urheberrecht vestößt.")
    Else
    GUICtrlSetData($install_filehash, $sFileHash)
    EndIf
    Else
    GUICtrlSetData($install_filehash, 'Fehlt')
    MsgBox(270384, "Warnung", "Achtung: Die ausgewählte Datei besitzt kein SecuredFileHash. Sie ist nicht mit UDF-Installer erstellt worden und enthällt möglicherweise schädigende Daten oder ein Script, welches gegen das Urheberrecht vestößt.")
    EndIf
    Else
    GUICtrlSetData($install_autor, 'Fehlt')
    GUICtrlSetData($install_version, 'Fehlt')
    GUICtrlSetData($install_datum, 'Fehlt')
    GUICtrlSetData($install_copyright, 'Fehlt')
    GUICtrlSetData($install_about, 'Fehlt')
    GUICtrlSetData($install_filehash, 'Fehlt')
    MsgBox(270384, "Warnung", "Achtung: Sie ist nicht mit UDF-Installer erstellt worden und enthällt möglicherweise schädigende Daten oder ein Script, welches gegen das Urheberrecht vestößt.")
    EndIf
    ProgressOff()
    EndIf
    Else
    $sPath = FileOpenDialog("Bitte suche ein Au3-Script...", "", "AutoIt 3 Script (*.au3)", 3)
    If (Not @error) And ($sPath <> "") Then
    ProgressOn("Öffne UDF...", "Bitte warten")
    $create_FilePath = $sPath
    $create_FileName = GetFileName($sPath)
    _GUICtrlComboBox_BeginUpdate($create_path)
    If _GUICtrlComboBox_SelectString($create_path, $sPath) <> -1 Then
    _GUICtrlComboBox_SetCurSel($create_path, _GUICtrlComboBox_SelectString($create_path, $sPath))
    Else
    _GUICtrlComboBox_SetCurSel($create_path, _GUICtrlComboBox_AddString($create_path, $sPath))
    EndIf
    _GUICtrlComboBox_EndUpdate($create_path)
    GUICtrlSetData($create_autor, Au3GetInformation($sPath, 'author'))
    GUICtrlSetData($create_version, Au3GetInformation($sPath, 'version'))
    GUICtrlSetData($create_datum, Au3GetInformation($sPath, 'date'))
    GUICtrlSetData($create_copyright, Au3GetInformation($sPath, 'copyright'))
    GUICtrlSetData($create_about, Au3GetInformation($sPath, 'about'))
    For $i = 1 To _GUICtrlListBox_GetCount($create_installlist)
    _GUICtrlListBox_DeleteString($create_installlist, 0)
    Next
    For $i = 1 To _GUICtrlListBox_GetCount($create_notinstalllist)
    _GUICtrlListBox_DeleteString($create_notinstalllist, 0)
    Next
    $sFunctions = Au3GetFunctions($sPath)
    If IsArray($sFunctions) Then
    ReDim $create_Tooltips[UBound($sFunctions)]
    ReDim $create_nTooltips[1]
    $create_nTooltips[0] = ""
    _GUICtrlListBox_BeginUpdate($create_installlist)
    For $i = 0 To UBound($sFunctions) - 1
    _GUICtrlListBox_AddString($create_installlist, $sFunctions[$i])
    $create_Tooltips[$i] = '(Benötigt die "' & $create_FileName & '")'
    Next
    _GUICtrlListBox_EndUpdate($create_installlist)
    Else
    MsgBox(270400, "Hinweis", "Die ausgewählte UDF enthällt keine Funktionen.")
    EndIf
    ProgressOff()
    EndIf
    EndIf
    EndFunc ;==>GuiFileOpen

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

    Func Au3Install()
    Local $hFile, $sLine, $i, $j, $sFile, $iPosUDF, $iPosUDFEND, $sNewFileStart, $sNewFileBetween, $sNewFileEnd, $aSplit, $sLastLine, $aFuncname, $sVersion
    If FileExists($install_FilePath) Then
    If FileExists($dir_include & '\' & GetFileName($install_FilePath)) Then
    $sVersion = Au3GetInformation($dir_include & '\' & GetFileName($install_FilePath), 'version')
    If $sVersion = "" Then
    If MsgBox(270404, "Bestätigung", "Die UDF existiert bereits, wurde allerdings nicht mit dem UDF-Installer erstellt. Willst du die vorhandenene Datei überschreiben?") = 7 Then Return -1
    Else
    If MsgBox(270404, "Bestätigung", "Die UDF existiert bereits als Version '" & $sVersion & "'. Du installierst gerade Version '" & GUICtrlRead($install_version) & "'. Willst du die vorhandenene Datei überschreiben?") = 7 Then Return -1
    EndIf
    FileDelete($dir_include & '\' & GetFileName($install_FilePath))
    EndIf

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

    FileCopy($install_FilePath, $dir_include & '\' & GetFileName($install_FilePath))

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

    ProgressOn("Installiere", "Verwerte Dateien...", "Lese API")

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

    $hFile = FileOpen($file_api, 1)
    For $i = 0 To UBound($install_Funcs) - 1
    FileWrite($hFile, @CRLF & $install_Funcs[$i] & ' ' & $install_tools[$i])
    Next
    FileClose($hFile)

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

    ProgressSet(5, "Lese Keywords")

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

    $hFile = FileOpen($file_keywords, 0)
    $sFile = FileRead($hFile)
    FileClose($hFile)

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

    ProgressSet(10, "Verwerte Keywords")

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

    $iPosUDF = StringInStr($sFile, 'au3.keywords.udfs=', 1)
    $sNewFileStart = StringLeft($sFile, $iPosUDF - 1)
    $iPosUDFEND = StringInStr(StringTrimLeft($sFile, $iPosUDF), 'au3.keywords.', 1)
    $sNewFileEnd = StringTrimLeft($sFile, $iPosUDF + $iPosUDFEND - 1)
    $sNewFileBetween = StringLeft(StringTrimLeft($sFile, $iPosUDF - 1), $iPosUDFEND)

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

    $sNewFileBetween = StringTrimLeft($sNewFileBetween, 18)
    $sNewFileBetween = StringReplace($sNewFileBetween, @TAB, "")
    $sNewFileBetween = StringReplace($sNewFileBetween, ' \' & @CRLF, " ", 0, 1)
    $sNewFileBetween = StringReplace($sNewFileBetween, '\' & @CRLF, "", 0, 1)
    While (StringRight($sNewFileBetween, 1) = @CR) Or (StringRight($sNewFileBetween, 1) = @LF) Or (StringRight($sNewFileBetween, 1) = @TAB) Or (StringRight($sNewFileBetween, 1) = ' ')
    $sNewFileBetween = StringTrimRight($sNewFileBetween, 1)
    WEnd

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

    ProgressSet(15, "Überprüfe vorhandene Keywords", "Installiere...")

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

    $aSplit = StringSplit($sNewFileBetween, ' ', 1)
    $j = 1
    Do
    ProgressSet(15 + ($j / $aSplit[0] * 50), "Überprüfe vorhandene Keywords", "Installiere...")
    For $i = 0 To UBound($install_Funcs) - 1
    If StringLower(Au3GetFuncName($aSplit[$j])) = StringLower(Au3GetFuncName($install_Funcs[$i])) Then
    _ArrayDelete($aSplit, $j)
    $j -= 1
    $aSplit[0] -= 1
    ExitLoop
    EndIf
    Next
    $j += 1
    Until $j = $aSplit[0]

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

    For $i = 0 To UBound($install_Funcs) - 1
    ProgressSet(65 + (($i + 1) / UBound($install_Funcs) * 10), "Schreibe neue Keywords", "Installiere...")
    _ArrayAdd($aSplit, Au3GetFuncName($install_Funcs[$i]))
    $aSplit[0] += 1
    Next

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

    $sNewFileBetween = 'au3.keywords.udfs='
    $j = 1
    For $i = 1 To $aSplit[0]
    ProgressSet(75 + (($i + 1) / UBound($install_Funcs) * 25), "Speichere Keywords", "Installiere...")
    $sNewFileBetween &= $aSplit[$i] & ' '
    If $j = 7 Then
    $sNewFileBetween &= '\' & @CRLF & @TAB
    $j = 1
    Else
    $j += 1
    EndIf
    Next

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

    If StringRight($sNewFileBetween, 1) = @TAB Then
    $sNewFileBetween = StringTrimRight($sNewFileBetween, 1)
    Else
    $sNewFileBetween &= @CRLF
    EndIf

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

    FileDelete($file_keywords)

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

    $hFile = FileOpen($file_keywords, 1)
    FileWrite($hFile, $sNewFileStart & $sNewFileBetween & $sNewFileEnd)
    FileClose($hFile)
    ProgressOff()

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

    If ProcessExists("SciTE.exe") Then
    If MsgBox(270404, "Fertig", "Die UDF wurde erfolgreich installiert." & @CRLF & "Damit du sie sofort verwenden kannst, musst du Scite neustarten." & @CRLF & "Scite jetzt neustarten (Wichtig: Nicht gespeicherte Daten gehen dabei verloren!)?") <> 7 Then
    ProcessClose("SciTE.exe")
    Run($dir_scite & '\SciTE.exe', $dir_scite)
    EndIf
    Else
    MsgBox(270400, "Fertig", "Die UDF wurde erfolgreich installiert und kann sofort genutzt werden.")
    EndIf
    Else
    MsgBox(270400, "Fehler", "Es ist momentan keine UDF geöffnet. Benutzte den Durchsuchen-Button oben links um eine UDF zu öffnen.")
    EndIf
    EndFunc ;==>Au3Install

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

    Func Au3GetFunctions($sPath)
    Local $iFile, $sFile, $aSplit
    $iFile = FileOpen($sPath, 0)
    $sFile = FileRead($sPath)
    FileClose($iFile)
    $aSplit = _StringBetween($sFile, 'Func ', @CRLF)
    If @error Then
    Return ""
    Else
    Return $aSplit
    EndIf
    EndFunc ;==>Au3GetFunctions

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

    Func Au3GetHash($sPath)
    Local $iFile, $sFile, $iPosStart, $iPosEnd, $sOriginal, $aSplit
    $iFile = FileOpen($sPath, 0)
    $sFile = FileRead($sPath)
    FileClose($iFile)
    $iPosStart = StringInStr($sFile, ';#udfinstaller_auth', 1)
    If $iPosStart Then
    $sOriginal = StringLeft($sFile, $iPosStart - 1)
    $sFile = StringTrimLeft($sFile, $iPosStart - 1)
    $iPosEnd = StringInStr($sFile, @CRLF, 1)
    If $iPosEnd Then
    $sOriginal &= StringTrimLeft($sFile, $iPosEnd + 1)
    Return StringLower(MD5Hash($sOriginal, 2, True))
    Else
    Return False
    EndIf
    Else
    Return False
    EndIf
    EndFunc ;==>Au3GetHash

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

    Func Au3CreateInformation($sPath)
    Local $sInformation, $sPacket, $i
    $sPacket = ';#udfinstaller_auth = "'
    $sInformation = @LF & 'author' & @LF & GUICtrlRead($create_autor) & @LF & '/author' & @LF & _
    @LF & 'version' & @LF & GUICtrlRead($create_version) & @LF & '/version' & @LF & _
    @LF & 'date' & @LF & GUICtrlRead($create_datum) & @LF & '/date' & @LF & _
    @LF & 'copyright' & @LF & GUICtrlRead($create_copyright) & @LF & '/copyright' & @LF & _
    @LF & 'about' & @LF & GUICtrlRead($create_about) & @LF & '/about' & @LF & _
    @LF & 'filehash' & @LF & StringLower(MD5Hash($sPath, 1, True)) & @LF & '/filehash' & @LF & _
    @LF & 'functions' & @LF & _GUICtrlListBox_GetCount($create_installlist) & @LF & '/functions' & @LF
    For $i = 1 To _GUICtrlListBox_GetCount($create_installlist)
    $sInformation &= @LF & 'func' & $i & @LF & _GUICtrlListBox_GetText($create_installlist, $i - 1) & @LF & '/func' & $i & @LF
    $sInformation &= @LF & 'tool' & $i & @LF & $create_Tooltips[$i - 1] & @LF & '/tool' & $i & @LF
    Next
    Return $sPacket & StringToBinary($sInformation) & '"' & @CRLF
    EndFunc ;==>Au3CreateInformation

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

    Func Au3GetInformation($sPath, $sInformation)
    Local $iFile, $sFile, $iPos, $sLine, $aSplit
    $iFile = FileOpen($sPath, 0)
    $sFile = FileRead($sPath)
    FileClose($iFile)
    $iPos = StringInStr($sFile, '#udfinstaller_auth')
    If $iPos Then
    $sLine = StringTrimLeft($sFile, $iPos)
    $aSplit = _StringBetween($sLine, '"', '"', 1)
    $sLine = BinaryToString($aSplit[0])
    $aSplit = _StringBetween($sLine, @LF & $sInformation & @LF, @LF & '/' & $sInformation & @LF, 1)
    If @error Then
    Return ""
    Else
    Return $aSplit[0]
    EndIf
    Else
    Return ""
    EndIf
    EndFunc ;==>Au3GetInformation

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

    Func GetFileName($sPath)
    Local $aSplit
    $aSplit = StringSplit($sPath, '\')
    Return $aSplit[$aSplit[0]]
    EndFunc ;==>GetFileName

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

    Func Au3GetFuncName($sString)
    Local $aSplit
    $sString = StringReplace($sString, ' ', '')
    $aSplit = StringSplit($sString, '(')
    Return $aSplit[1]
    EndFunc ;==>Au3GetFuncName

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

    Func DateGet()
    Return @MDAY & "." & @MON & "." & @YEAR
    EndFunc ;==>DateGet

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

    Func GuiTerminate()
    PluginClose($MD5Plugin)
    GUIDelete($Form)
    Exit
    EndFunc ;==>GuiTerminate

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

    Func GuiSetActiveX($oIE, $iType)
    If Ping('http://blackscreen.bl.funpic.de') Then
    If $iType = 1 Then
    _IENavigate($oIE, 'http://blackscreen.bl.funpic.de/udfinstaller/news.php', 0)
    Else
    _IENavigate($oIE, 'http://blackscreen.bl.funpic.de/udfinstaller/sammlung.php', 0)
    EndIf
    Else
    If $iType = 1 Then
    If FileExists(@TempDir & '\udfi_news.html') Then FileDelete(@TempDir & '\udfi_news.html')
    FileWrite(@TempDir & '\udfi_news.html', '<html><body><h1>UDF Installer</h1></body></html>')
    _IENavigate($oIE, @TempDir & '\udfi_news.html', 0)
    Else
    If FileExists(@TempDir & '\udfi_sammlung.html') Then FileDelete(@TempDir & '\udfi_sammlung.html')
    FileWrite(@TempDir & '\udfi_news.html', '<html><body><h1>Momentan kein Zugriff</h1></body></html>')
    _IENavigate($oIE, @TempDir & '\udfi_sammlung.html', 0)
    EndIf
    EndIf
    EndFunc ;==>GuiSetActiveX

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

    Func GUIInstallError($iID)
    Switch $iID
    Case 1
    MsgBox(270352, "Fataler Fehler", "Scite konnte nicht unter '" & $dir_scite & "' gefunden werden!")
    Case 2
    MsgBox(270352, "Fataler Fehler", "Scite-Properties konnte nicht unter '" & $dir_scite & "' gefunden werden!")
    Case 3
    MsgBox(270352, "Fataler Fehler", "Scite-Api konnte nicht unter '" & $dir_scite & "' gefunden werden!")
    Case 4
    MsgBox(270352, "Fataler Fehler", "Includes konnte nicht unter '" & $dir_include & "' gefunden werden!")
    Case 5
    MsgBox(270352, "Fataler Fehler", "Scite-Api konnte nicht unter '" & $file_api & "' gefunden werden!")
    Case 6
    MsgBox(270352, "Fataler Fehler", "Scite-Keywords konnte nicht unter '" & $file_keywords & "' gefunden werden!")
    Case 7
    MsgBox(270352, "Fataler Fehler", "Du musst den AutoIt-Ordner auswählen!")
    Case 8
    MsgBox(270352, "Fataler Fehler", "Während des Patchvorgangs ist ein Fehler aufgetreten!")
    EndSwitch
    Exit
    EndFunc ;==>GUIInstallError

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

    Func _TCPDownload($ip, $host, $file, $path)
    Local $iSocket, $sPacket, $sHeader, $iLen, $aSplit, $sFile
    $sPacket = 'GET /' & $file & ' HTTP/1.1' & @CRLF & _
    'Host: ' & $host & @CRLF & _
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)' & @CRLF & _
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF & _
    'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF & _
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF & _
    'Keep-Alive: 300' & @CRLF & _
    'Connection: keep-alive' & @CRLF & @CRLF
    TCPStartup()
    $iSocket = TCPConnect($ip, 80)
    If TCPSend($iSocket, $sPacket) Then
    Do
    $sHeader = TCPRecv($iSocket, 1024)
    Until $sHeader <> ''
    $sHeader = BinaryToString($sHeader)
    $iLen = _StringBetween($sHeader, 'Content-Length: ', @CRLF, 1)
    $aSplit = StringSplit($sHeader, @CRLF & @CRLF, 1)
    $sFile = $aSplit[2]
    Do
    $sFile &= BinaryToString(TCPRecv($iSocket, 1024))
    ProgressSet(Ceiling(StringLen($sFile) / $iLen[0] * 100))
    Until StringLen($sFile) >= $iLen[0]
    FileWrite($path, StringToBinary($sFile))
    EndIf
    TCPCloseSocket($iSocket)
    TCPShutdown()
    EndFunc ;==>_TCPDownload

    [/autoit]

    Ihr benötigt 1 Bild und eine dll die im Anhang, sowie das script selbst enthalten sind: autoit.de/wcf/attachment/7283/

    Feedback gerne gesehen, Verbesserungen und die neusten Updates sind im AutoItBot-Forum zu finden :)
    MfG AMrK :rock:

  • Hallo AMrK.
    Also ich weiss wirklich nicht, wozu ich einen UDF Installer brauche.
    Ich hab mir dein Script auch mal angeguckt, und irgendwie komme ich damit nich klar.
    Du solltest vllt. ne ausführliche ReadMe machen oder so.
    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Naja... ich verstehe zwar nicht ganz warum man ein forum zuspamt um zu sagen "ich brauch das nicht" aber ich tu dir mal den gefallen und poste dir ein "how to" auch wenn die funktionen eigentlich selbsterklärend sind...

    Schritt 1:
    [Blockierte Grafik: http://img20.imageshack.us/img20/184/screeny001.jpg]
    Zuerst startest du das Programm. Es kann sein, dass du dich als Admin anmelden musst.

    Schrit 2:
    [Blockierte Grafik: http://img29.imageshack.us/img29/1245/screeny002.jpg]
    Beim ersten mal starten wirst du gefragt, ob der AutIt-Ordner stimmt. Hier bestätigst du das oder berichtigst den Pfad...

    Schritt 3:
    [Blockierte Grafik: http://img32.imageshack.us/img32/1373/screeny003.jpg]
    Nun gehst du unter UDF erstellen und klickst auf das "Datei öffnen"-Symbol und wählst im Dialog ein AutoIt-Script aus...

    Schritt 4:
    [Blockierte Grafik: http://img29.imageshack.us/img29/1048/screeny004.jpg]
    Nun kannst du diverse Informationen hinzufügen, wie Autor oder eine kurze Beschreibung zur UDF...

    Schritt 5:
    [Blockierte Grafik: http://img511.imageshack.us/img511/1885/screeny005.jpg]
    Darunter findest du Alle Funktionen, die die UDF enthällt. Hier kannst du Funktionen entfernen (diese werden nicht als Tooltip angezeigt oder gehighlighted), wie z.B. OnAutoItExit...

    Schritt 6:
    [Blockierte Grafik: http://img20.imageshack.us/img20/9587/screeny006.jpg]
    In der Inputbox kannst du zu jeder Funktion einen beliebigen Tooltip hinzufügen...

    Schritt 7:
    [Blockierte Grafik: http://img51.imageshack.us/img51/8210/screeny007.jpg]
    Dann klickste auf Exportieren, wählst den Zielpfad aus (noch nicht den Include-Ordner) bestätigst dannach die MsgBox...

    Schritt 8:
    [Blockierte Grafik: http://img511.imageshack.us/img511/1451/screeny008.jpg]
    Wenn du nun die UDF installieren willst, klickst du auf das "Datei öffnen"-Symbol und wählst eine UDF aus. Falls diese nun mit dem UDF-Installer erstellt wurde, werden dir die Informationen angezeigt. und die Funktionen die installiert werden.

    Schritt 9:
    [Blockierte Grafik: http://img96.imageshack.us/img96/3407/screeny009.jpg]
    Nach der Installation wirst du gefragt (falls du Scite offen hast), ob Scite neugestartet werden soll, damit die Änderungen in Wirkung treten...

    Schritt 10:
    [Blockierte Grafik: http://img189.imageshack.us/img189/795/screeny010.jpg]
    In Scite findest du nun ein Tooltip :) das Highlighting kommt natürlich mit der nächsten Version rein ;)

    Hoffe, dass du es jetzt auch verstehst :)

  • Auch wenn ich es noch nicht ausprobiert habe, hört es sich super an, und auch sauber umgesetzt. Was mich am meisten beeindrucked ist der ToolTip, der dann auch wie bei den normalen Funktionen ist erscheint.
    Sowas ähnliches (nicht so gut) hatte ich auch mal vor.... :thumbup:
    Also, super Idee :thumbup:

    • Offizieller Beitrag

    Naja, installierer sollte es sich schon, um es testen zu können.
    autoit.de/wcf/attachment/7294/

  • mhh komisch... normalerweise sollte es klappen^^
    kommentiert einfach mal die updatefunkion aus... dann könnt ihrs testen^^
    habt ihr win7?

    • Offizieller Beitrag

    Windows 7 Ultimate 64.

  • dann liegts irgendwie an win 7^^ der fehler kommt nämlich eigentlich nur dann wenn aus der gedownloadeten update.ini ein string nicht gelesen werden konnte, was ersten unmöglich ist, weil alle strings vorhanden sind^^ und 2tens sollte das update gar nicht erst gemacht werden, weil es die aktuelle version ist^^ da klappt anscheinend was nicht mit dem download :)

    weiß einer ob sich tcp nicht mit win7 verträgt?^^
    ansonsten wie gesagt zeile 57 auskommentieren ;)

  • Ich kann dir zwar nicht sagen ob sich TCP nicht mit Win7 verträgt, aber auf meinem Notebook (Vista Home Premium 32Bit)
    sowie meinem PC/Arbeitstier (Vista Ultimate 64Bit) bekomme ich die selbe Fehlermeldung. Würde mich freuen, wenn jemand für dieses Kompatibilitätsproblem eine Lösung findet. Um die Updatefunktion wär's doch schade :D .

  • man kann alternativ auch meinen gesamten updateblock (der die update.ini per tcp runterlädt) per inetget machen... allerdings hab ich mit inetget nur schlechte erfahrungen gemacht, weshalb ich tcp benutzt habe^^
    werde demnächst auch eine Non-auto-update version posten^^ bei der müsste man sich dann das update selber runterladen^^ aber das sollte ja kein problem sein xD

  • bekomme Fehlermeldung beim ausführen:

    Fataler Fehler
    ---------------------------
    Während des Patchvorgangs ist ein Fehler aufgetreten!