1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. bernd670

Beiträge von bernd670

  • AdlibEnable

    • bernd670
    • 26. Mai 2006 um 01:43

    Hallo,

    die AutoIt Funktion MsgBox ruft die Funktion MessageBox aus der user32.dll auf. Diese läuft immer Modal, d.h. das laufende Programm wird solange angehalten bis das Fenster wieder geschlossen ist! Eine Möglichkeit wäre auf die Funktion MsgBox zu verzichten und eine eigne Funktion zu schreiben. Die zweite Möglichkeit ist, die Funktion myadlib und AdlibEnable in ein separates Programm zu packen welche am Anfang mit Run gestartet und am ende wieder beendet wird:

    Spoiler anzeigen

    Programm chkmsg:

    PHP
    AdlibEnable("myadlib")
    
    
    While 1
        Sleep(500) 
    WEnd
    
    Func myadlib()
        If WinActive("lol") Then
           TrayTip("test","jaaaaa",5)
        EndIf
    EndFunc
    Alles anzeigen

    2. Programm:

    PHP
    Run("chkmsg.exe")
    
    
    MsgBox(0,"lol","und?")
    
    
    ProcessClose("chkmsg.exe")
  • TCP... über Internet?

    • bernd670
    • 25. Mai 2006 um 01:53

    Normalerweise baut immer der Client die Verbindung zum Server auf und nicht umgekehrt.

  • text in au3 datei

    • bernd670
    • 25. Mai 2006 um 01:42

    Hallo,

    suche einfach mal nach der Datei Template.au3, diese Datei wird jedesmal kopiert wenn du mit der rechten MT eine neue Datei erstellst. Bei XP findest du sie im Ordner C:\WINDOWS\ShellNew\.

    Alternativ kannst du in der Registry auch den Wert von HKEY_CLASSES_ROOT\.au3\ShellNew\Filename anpassen!

  • TCP... über Internet?

    • bernd670
    • 24. Mai 2006 um 23:31

    Das kann so auch nicht funktionieren, der Server ist richtig, beim Client muss die Variable $g_ip den gleichen Wert haben wie beim Server, mit dem er Verbindung aufnehmen soll und nicht die lokale Adresse.

  • TCP... über Internet?

    • bernd670
    • 24. Mai 2006 um 22:23

    Hallo,

    so wie du es in deinem 2. Bsp. geschrieben hast,

    Zitat

    Original von gtaspider

    ...

    bsp:
    192.168.0.1 (Lan,client) kann auf 192.168.0.2 (lan,server) zugreifen
    83.64.4.9 (Wan,Client) kann nicht auf 192.168.0.2 (Lan,Server) zugreifen!

    ...


    kann es nie funktionieren! Das würde ja bedeuten, das du der Variable $g_ip den Wert 192.168.0.2 zugewiesen hast und versuchst von einem Rechner (Client) im WAN auf den Rechner im LAN (Server) zuzugreifen.

    Wenn dann musst du das so machen:

    Spoiler anzeigen


    Server:

    Code
    Global $MainSocket = -1
    Global $ConnectedSocket = -1
    Global $g_ip = 83.64.4.9;@IPAddress2;z.b. 192.168.0.11 (bei mir aber 192.168.0.10...)
    _Startup()
    
    
    while 1
        $message = TCPRecv ($ConnectedSocket,512)
        switch $message
            case "~bye"
                _Shutdown()
                _Startup()
            case "~terminate"
                _Shutdown()
                exit
            case "~CDROM open"
                $drives = DriveGetDrive ( "CDROM" )
                for $i = 1 to $drives[0]
                cdtray($drives[$i],"open")
                next
            case "~CDROM close"
                $drives = DriveGetDrive ( "CDROM" )
                for $i = 1 to $drives[0]
                cdtray($drives[$i],"close")
                next
            case "~blockinput on"
                blockinput(1)
            case "~blockinput off"
                blockinput(0)
        EndSwitch
        if StringLeft ($message,5) = "~send" then
            send(StringTrimLeft ($message,5))
        endif
        if StringLeft ($message,8) = "~message" then
            MsgBox(0,"Message",StringTrimLeft ($message,8))
        endif
    Wend
    
    
    func _Startup()
        TCPStartUp()
        $MainSocket = TCPListen($g_IP,20001)
    ;    If $MainSocket = -1 Then Exit
        While 1
            $ConnectedSocket = TCPAccept($MainSocket)
            If $ConnectedSocket >= 0 Then
                exitloop
            EndIf
        Wend
    endfunc
    
    
    func _Shutdown()
        TCPCloseSocket ($ConnectedSocket)
        TCPCloseSocket ($MainSocket)
        TCPShutdown()
    endfunc
    Alles anzeigen

    Client:

    Code
    $g_ip = "83.64.4.9"
    
    
    ; Start The TCP Services
    TCPStartUp()
    
    
    ; Connect to a Listening "SOCKET"
    $Socket = TCPConnect( $g_IP, 20001 )
    If $Socket = -1 Then
        MsgBox(0,"Error","Could not connect")
        exit
    EndIf
    sleep(100)
    while 1
    $message = inputBox("Command", "")
    if @error = 1 then Exit
    if $message = "~terminate" or $message = "~bye" then exit
    TCPSend ($Socket, $message)
    $recv = TCPRecv($Socket,256)
    Wend
    
    
    Func OnAutoItExit()
    TCPSend ($Socket, "~bye")
    TCPCloseSocket ($Socket)
    TCPShutdown ()
    EndFunc
    Alles anzeigen
  • TCP... über Internet?

    • bernd670
    • 23. Mai 2006 um 06:10

    Hallo,

    Zitat

    Original von gtaspider
    Halo

    aso das meinst du ;) das hab ich ja auch gemacht.. funktioniert nicht über: mein rechner (also dein Vorschlag) und auch nicht über ein anderem Rechner in meiner Arbeitsgruppe/meinem Netzwerk

    Mfg Spider

    noch mal zum Verständnis ?(, es läuft auch nicht wenn du es lokal laufen lässt?
    Ich hab es mal bei mir (lokal), getestet und da läuft es ohne Probleme :]!

  • TCP... über Internet?

    • bernd670
    • 22. Mai 2006 um 22:28

    Hallo,

    das macht man normal nur, um zu testen ob Server- und Clientsoftware richtig miteinander kommunizieren bevor man sie in einer Netzwerkumgebung einsetzt!

  • TCP... über Internet?

    • bernd670
    • 22. Mai 2006 um 19:54

    Hallo,

    meine Ausage:

    Zitat

    Original von bernd670
    Hallo,

    man braucht keine 2. IP-Adresse wenn man Server und Client auf einem Rechner laufen läßt, eventuell mal einen anderen Port > 20000 verwenden!


    bezog sich auf die Ausage von Eddy_Erpel:

    Zitat

    Original von Eddy_Erpel
    Hallo,
    mir ist da nochmals etwas in den Sinn gekommen. Wenn Du es nur auf einem PC machst, musst Du noch eine 2. IP auf dem PC vergeben und den Server auf der 2. IP laufen lassen.
    Portforwarding allerdings auf die 1. IP
    Andere Frage: Wenn du alles mit lokalen IPs machst läuft es dann?
    eddy_erpel

  • TCP... über Internet?

    • bernd670
    • 22. Mai 2006 um 11:28

    Hallo,

    man braucht keine 2. IP-Adresse wenn man Server und Client auf einem Rechner laufen läßt, eventuell mal einen anderen Port > 20000 verwenden!

  • Übersetzung der Beta

    • bernd670
    • 21. Mai 2006 um 18:31

    Hallo,

    ich habe mich mal hingesetzt und mein altes Programm so umgeschrieben, das es möglich sien sollte, die Dateien von zwei Versionen miteinander zu vergleichen. Alle Texte können in der INI-Datei angepasst werden (für @Kruemel 8)).

    @1: Ich habe noch einen kleinen Fehler behoben und die Vergleichsfunktion etwas verbessert (leider zu ungunsten der Laufzeit)!

  • eMail´s holen mit AutoIt

    • bernd670
    • 21. Mai 2006 um 12:10

    Hallo,

    ich habe mal die Funkiton _mailchk so abgeändert, das sie die Header aller Mail's aus dem Postfach ausliest und anzeigt:

    Spoiler anzeigen
    Code
    $Pop3Svr="pop.gmx.net"
    $Pop3User=""
    $Pop3Pass=""
    
    
    _ReadMailHeaders($Pop3Svr,$Pop3User,$Pop3Pass)
    
    
    Func _ReadMailHeaders($popsrv, $srvuser, $srvpass)
    
    	Local $mail, $i, $disp, $recv, $str, $count, $check, $str1, $err, $recpoint, $bit, $mcount, $recpoint1, $error
    
    	TCPStartup ()
    
    	Global $socket = TCPConnect (TCPNameToIP ($popsrv), 110)
    	If $socket = -1 Then
    		MsgBox(8240, 'Error', 'Error; could not connect to server ' & $popsrv, 5)
    		Return
    	EndIf
    
    	Do
    		$recv = TCPRecv ($socket, 512)
    	Until $recv <> ""
    	$recv = ""
    
    	TCPSend ($socket, "user " & $srvuser & @CRLF)
    
    	Do
    		$recv = TCPRecv ($socket, 512)
    	Until $recv <> ""
    	$recv = ""
    
    
    	TCPSend ($socket, "pass " & $srvpass & @CRLF)
    
    	Do
    		$recv = TCPRecv ($socket, 512)
    	Until $recv <> ""
    	$err = StringInStr($recv, "-ERR")
    	If $err > 0 Then
    		MsgBox(4112, "authentication failed", "Invalid User Name or Password for " & $popsrv, 8)
    		TCPSend ($socket, 'quit' & @CRLF)
    		TCPCloseSocket ($socket)
    		$error = $error + 1
    		Return
    	EndIf
    	$recv = ""
    
    
    	TCPSend ($socket, 'list' & @CRLF)
    	Do
    		$recv = TCPRecv ($socket, 10240)
    		$recpoint = StringInStr($recv, ".")
    		Sleep(1000)
    	Until $recpoint > 0
    
    	$str = StringSplit($recv, @LF)
    	$str1 = StringSplit($str[1], " ")
    	$check = StringIsDigit($str1[1])
    	If $check = 1 Then
    		$count = 0
    		$bit = 0
    	Else
    		$count = 1
    		$bit = 1
    	EndIf
    
    	Do
    		$count = $count + 1
    		$str1 = StringSplit($str[$count], " ")
    		$check = StringIsDigit($str1[1])
    	Until $check = 0
    	If $bit = 1 Then
    		$mcount = $count - 2
    	Else
    		$mcount = $count - 1
    	EndIf
    
    
        For $count = $mcount - 1 To 0 Step - 1 
            TCPSend ($socket, 'top '& $count & ' 0' & @CRLF) 
            Do
                $recv = TCPRecv ($socket, 10240)
            Until $recv <> ""
            if MsgBox(4, "Header von Mail "& $count, $recv & @CRLF & @CRLF & "nächsten Header lesen ?" ) = 7 then ExitLoop
            $recv = ""
        Next
    
    
    	TCPSend ($socket, 'quit' & @CRLF)
    	TCPCloseSocket ($socket)
    
    	Return $mcount
    EndFunc
    Alles anzeigen

    nicht vergessen $Pop3Svr, $Pop3User und $Pop3Pass anzupassen!

    Den Top-Befehl, wie ihn @jonk bereits beschrieben hat, findest du in Zeile 78, wenn n = 0 ist wird nur der Header ausglesen.


    Erläuterung zur Ausgabe:
    - X-Flags -> kann man auswerten um z.B. festzustellen ob die Mail ungelesen ist
    - Subject -> ist die Betreffzeile
    - From -> hat die Mail geschickt

  • Commander

    • bernd670
    • 20. Mai 2006 um 21:44

    hier ist die neue Version mit _GUICtrlTreeViewInsertItem, ist aber noch nicht das gelbe vom Ei, wenn ein bestimmter Speicherbereich überschritten wird, beendet das Programm! ?(

    Bei mir etwa nach 84000 eingelesenen Zeilen!

    Spoiler anzeigen
    C
    ;~ ###################################################
    ;~ # Funktion: Stellt Dateiinhalt als TreeView dar
    ;~ #
    ;~ # Autor: bernd670 & GtaSpider
    ;~ #
    ;~ # AutoIt-Version: 3.1.1.124 beta
    ;~ ##################################################
    #include <File.au3>
    #include <Array.au3>
    #include <GUIConstants.au3>
    #include <GuiTreeView.au3>
    
    
    Global $Tree[1], $FileTable[1][2]
    
    
    $datei = "WS2KADM002.txt"
    SplashTextOn("dada","initalizing",200,20,-1,-1,17)
    
    
    Opt("TrayIconDebug",1)
    
    
    $mainwindow = GUICreate("BG Commander - "&$datei, 359, 439, 193, 126)
    $TreeView = GUICtrlCreateTreeView(10, 10, 261, 397, BitOR($WS_BORDER, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS))
    ;GUICtrlSetImage(-1, "shell32.dll", 4, 3)
    $Search = GUICtrlCreateInput("", 60, 410, 121, 20)
    GUICtrlCreateLabel("Suche:", 20, 410, 38, 15)
    $SearchBut = GUICtrlCreateButton("Suchen", 190, 410, 82, 25, 0)
    $start = GUICtrlCreateButton("Datei &Starten", 280, 10, 75, 25, 0)
    $exit = GUICtrlCreateButton("E&xit", 280, 410, 75, 25, 0)
    GUICtrlCreateEdit("", 280, 40, 75, 359,  BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Copyright by"&@CRLF&"Bernd 670"&@CRLF&"& GtaSpider"&@CRLF&""&@CRLF&"Was macht"&@CRLF&"dieser"&@CRLF&"Commander?"&@CRLF&""&@CRLF&"Er listet von"&@CRLF&"einer Datei,"&@CRLF&"Dateien,"&@CRLF&"Ordner"&@CRLF&"und"&@CRLF&"Laufwerke"&@CRLF&"auf die er"&@CRLF&"dann in der"&@CRLF&"Box"&@CRLF&"Kompfortabel"&@CRLF&"anzeigt"&@CRLF&"werden"&@CRLF&""&@CRLF&"Was mach"&@CRLF&"ich bei Problemen?"&@CRLF&""&@CRLF&"Entweder eine"&@CRLF&"Im Forum"&@CRLF&"fragen!")
    MakeFileTree($datei)
    
    
    SplashOff()
    
    
    GUISetState()
    
    
    While 1
    	$msg = GUIGetMsg()
    	Select
    		Case $msg = $GUI_EVENT_CLOSE Or $msg = $exit
    			Exit
    		Case $msg = $start
    			SelectFile(GUICtrlSendMsg($TreeView, $TVM_GETNEXTITEM, $TVGN_CARET, 0))
    		Case $msg = $SearchBut
    			$SearchFile = GUICtrlRead($Search)
    			Search($SearchFile)
    	EndSelect
    WEnd
    
    
    Func Search($Search)
    	;Hier kommt dann die Suchfunktion rein!
    	MsgBox(0,"",$Search)
    EndFunc
    Func SelectFile($lastclick)
    	;Beachte: an diesem Punkt wäre @GUI_CTRLID gleich $Tree[$Ebene]
    	For $index = 0 To UBound($FileTable, 1) - 1
    		If $FileTable[$index][0] = $lastclick Then
    			RunWait(@ComSpec & ' /c start "' & $FileTable[$index][1] & '"', '', @SW_HIDE)
    			ExitLoop
    		EndIf
    	Next
    EndFunc   ;==>SelectFile
    
    
    
    
    Func MakeFileTree($strFileName)
    
    	Local $arFile, $arTemp, $iFile, $iInsert, $iPos, $iPos2, $iFTNum
    
    	If Not FileExists($strFileName) Then
    		MsgBox(16, "Fehler", "Datei " & $strFileName & " existiert nicht!")
    		Exit
    	EndIf
    	_FileReadToArray($strFileName, $arFile)
        DirSort($arFile)
    ; 	_ArraySort($arFile,0,1)
    
    
        ; Leerzeilen entfernen
        $iPos = 1
        While 1
            If Not stringlen(StringStripWS($arFile[1],15)) Then 
                _ArrayDelete($arFile,1)
                $arFile[0] = $arFile[0] - 1
            Else
                ExitLoop
            EndIf
            $iPos = $iPos + 1
        Wend
    
    
        $Ebene = 0
        $iFTNum = 0
    	$arTemp = StringSplit(StringStripCR($arFile[1]), "\")
    	For $iInsert = 1 To $arTemp[0]
    
    		If UBound($Tree, 1) <= $Ebene Then ReDim $Tree[$Ebene + 1]
    
    		Select
    			Case $iInsert = 1
    				; Laufwerksbezeichnung
    				ControlSetText("dada","","Static1", $arTemp[$iInsert])
                    $Tree[$Ebene] = _GUICtrlTreeViewInsertItem($TreeView, $arTemp[$iInsert])
    				$icon = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", "8")
    				If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,8"
    				$icon2 = "0"
    				$sis = StringInStr($icon, ",", 0, -1)
    				If $sis Then
    					$icon2 = StringTrimLeft($icon, $sis)
    					$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    				EndIf
                    _GUICtrlTreeViewSetIcon($TreeView, $Tree[$Ebene], $icon, $icon2)
    				$Ebene = $Ebene + 1
    
    			Case $iInsert = $arTemp[0]
    				; Dateiname
                    $Tree[$Ebene] = _GUICtrlTreeViewInsertItem($TreeView, $arTemp[$iInsert], $Tree[$Ebene - 1])
    				$ext = StringTrimLeft($arTemp[$iInsert], StringInStr($arTemp[$iInsert], ".", 0, -1) - 1)
    				$icon = RegRead("HKCR\" & $ext, "")
    				$icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
                    If @error Then
                        $icon = RegRead("HKCR\" & $ext, "")
                        $icon = RegRead("HKCR\" & $icon & "\CurVer", "")
                        $icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
                    EndIf
    				If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
    				$icon2 = "0"
    				$sis = StringInStr($icon, ",", 0, -1)
    				If $sis Then
    					$icon2 = StringTrimLeft($icon, $sis)
    					$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    				EndIf
                    _GUICtrlTreeViewSetIcon($TreeView, $Tree[$Ebene], $icon, $icon2)
                    $FileTable[$iFTNum][0] = $Tree[$Ebene]
                    $FileTable[$iFTNum][1] = $arFile[1]
                    $iFTNum = $iFTNum + 1
                    If UBound($FileTable,1) <= $iFTNum Then ReDim $FileTable[$iFTNum + 10000][2]
    
    			Case Else
    				; Verzeichnisname
                    $Tree[$Ebene] = _GUICtrlTreeViewInsertItem($TreeView, $arTemp[$iInsert], $Tree[$Ebene - 1])
                    _GUICtrlTreeViewSetIcon($TreeView, $Tree[$Ebene], "shell32.dll", 4)
    				$Ebene = $Ebene + 1
    
    		EndSelect
    	Next
    
    	For $iFile = 2 To $arFile[0]
    		$arTemp = StringSplit(StringStripCR($arFile[$iFile]), "\")
    		$iPos = StringInStr($arFile[$iFile], "\", 0, -1)
    		$strLeft = StringLeft($arFile[$iFile], $iPos)
    
    		; Ebenenkorrektur
    		$iPos2 = StringInStr($arFile[$iFile - 1], "\", 0, -1)
            $Ebene = $Ebene + (UBound(StringSplit($strLeft, "\"), 1) - UBound(StringSplit(StringLeft($arFile[$iFile - 1], $iPos2), "\"), 1))
    
    
            ControlSetText("dada","","Static1", $iFile & " / " & $arFile[0])
    
    		For $iSearch = 0 To $arTemp[0] - 1
    			If StringLeft($arFile[$iFile - 1], StringLen($strLeft)) = $strLeft Then
    				For $iInsert = $iSearch To 0 Step - 1
    
    					If UBound($Tree, 1) <= $Ebene Then ReDim $Tree[$Ebene + 1]
    
    					Select
    						Case $iInsert = 0
    							; Dateiname
    							If $Ebene = 0 Then $Ebene = 1
                                $Tree[$Ebene] = _GUICtrlTreeViewInsertItem($TreeView, $arTemp[$arTemp[0] - $iInsert], $Tree[$Ebene - 1])
    							$ext = StringTrimLeft($arTemp[$arTemp[0] - $iInsert], StringInStr($arTemp[$arTemp[0] - $iInsert], ".", 0, -1) - 1)
    							$icon = RegRead("HKCR\" & $ext, "")
    							$icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
                                If @error Then
                                    $icon = RegRead("HKCR\" & $ext, "")
                                    $icon = RegRead("HKCR\" & $icon & "\CurVer", "")
                                    $icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
                                EndIf
    							If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
    							$icon2 = "0"
    							$sis = StringInStr($icon, ",", 0, -1)
    							If $sis Then
    								$icon2 = StringTrimLeft($icon, $sis)
    								$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    							EndIf
    ;~                             ControlSetText("dada","","Static1", $icon & "|"  & $icon2)
                                _GUICtrlTreeViewSetIcon($TreeView, $Tree[$Ebene], $icon, $icon2)
                                $FileTable[$iFTNum][0] = $Tree[$Ebene]
                                $FileTable[$iFTNum][1] = $arFile[$iFile]
                                $iFTNum = $iFTNum + 1
                                If UBound($FileTable,1) <= $iFTNum Then ReDim $FileTable[$iFTNum + 10000][2]
    
    						Case $iInsert = $arTemp[0] - 1
    							; Laufwerksbezeichnung
                                $Tree[$Ebene] = _GUICtrlTreeViewInsertItem($TreeView, $arTemp[$arTemp[0] - $iInsert])
    							$icon = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", "8")
    							If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,8"
    							$icon2 = "0"
    							$sis = StringInStr($icon, ",", 0, -1)
    							If $sis Then
    								$icon2 = StringTrimLeft($icon, $sis)
    								$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    							EndIf
                                _GUICtrlTreeViewSetIcon($TreeView, $Tree[$Ebene], $icon, $icon2)
    							$Ebene = $Ebene + 1
    
    						Case Else
    							; Verzeichnisname
                                $Tree[$Ebene] = _GUICtrlTreeViewInsertItem($TreeView, $arTemp[$arTemp[0] - $iInsert], $Tree[$Ebene - 1])
                                _GUICtrlTreeViewSetIcon($TreeView, $Tree[$Ebene], "shell32.dll", 4)
    							$Ebene = $Ebene + 1
    
    					EndSelect
    				Next
    				ExitLoop
    			Else
    				$Ebene = $Ebene - 1
    			EndIf
    			$iPos = StringInStr($strLeft, "\", 0, -2)
    			$strLeft = StringLeft($strLeft, $iPos)
    		Next
    	Next
        ReDim $FileTable[$iFTNum]
        MsgBox(0,"Elemente im TreeView",GUICtrlSendMsg($TreeView, $TVM_GETCOUNT, 0, 0))
    	;_GUICtrlTreeViewSort ($TreeView)
    EndFunc   ;==>MakeFileTree
    
    
    
    
    Func DirSort (ByRef $arUnSort)
        ;; Muss noch angepaßt werden damit die 
        ;; Dateien und Order in der richtigen Reihenfolge stehen
        Local $iIndex
    
        MyQuickSort($arUnSort,1,UBound($arUnSort,1)-1)
    
    
    EndFunc
    
    
    Func MyQuickSort (ByRef $arUnSort, $iFirst, $iLast)
    
        Local $iLeft = $iFirst
        Local $iRight = $iLast
        Local $arPivo = $arUnSort[($iFirst+$iLast)/2]
        Local $arTemp
    
    
        Do
            While $arUnSort[$iLeft] < $arPivo
                $iLeft = $iLeft + 1
            WEnd
    
    
            While $arUnSort[$iRight] > $arPivo
                $iRight = $iRight - 1
            WEnd
    
    
            If ($iLeft <= $iRight) Then
                $arTemp = $arUnSort[$iLeft]
                $arUnSort[$iLeft] = $arUnSort[$iRight]
                $arUnSort[$iRight] = $arTemp
                $iLeft = $iLeft + 1
                $iRight = $iRight - 1
            EndIf
        Until ($iLeft > $iRight)
    
    
        If ($iFirst < $iRight) Then MyQuickSort($arUnSort,$iFirst,$iRight)
        If ($iLeft < $iLast) Then MyQuickSort($arUnSort,$iLeft,$iLast)
    EndFunc
    Alles anzeigen
  • eMail´s holen mit AutoIt

    • bernd670
    • 20. Mai 2006 um 21:28

    Hallo und herzlich Willkommen,

    ich habe da was im englischen Forum gefunden http://www.autoitscript.com/forum/index.php?showtopic=21820&hl=pop3. Schau dir mal die Funktion _mailchk in email.au3 an :D

  • Commander

    • bernd670
    • 20. Mai 2006 um 16:14

    Werde ich gleich mal probieren! :comp2:

  • Commander

    • bernd670
    • 20. Mai 2006 um 16:09

    Ich habe die Funktion MakeFileTree etwas optimiert.

    Die Änderungen beziehen sich auf die Zeilen: 3, 24, 61-64 und 110-113

    Spoiler anzeigen
    Code
    Func MakeFileTree($strFileName)
    
    	Local $arFile, $arTemp, $iFile, $iInsert, $iPos, $iPos2, $iFTNum
    
    	If Not FileExists($strFileName) Then
    		MsgBox(16, "Fehler", "Datei " & $strFileName & " wurde nicht gefunden!")
    		Exit
    	EndIf
    	_FileReadToArray($strFileName, $arFile)
    ; 	_ArraySort($arFile,0,1)
    	; Leerzeilen entfernen
    	    $iPos = 1
    	    While 1
    	        If Not stringlen(StringStripWS($arFile[1],15)) Then 
    		   _ArrayDelete($arFile,1)
    		   $arFile[0] = $arFile[0] - 1
    	        Else
    		   ExitLoop
    	        EndIf
    	        $iPos = $iPos + 1
    	    Wend
    
    
        $Ebene = 0
        $iFTNum = 0
    	$arTemp = StringSplit(StringStripCR($arFile[1]), "\")
    	For $iInsert = 1 To $arTemp[0]
    
    		If UBound($Tree, 1) <= $Ebene Then ReDim $Tree[$Ebene + 1]
    
    		Select
    			Case $iInsert = 1
    				; Laufwerksbezeichnung
    				ControlSetText("dada","","Static1", $arTemp[$iInsert])
    				$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$iInsert], $TreeView)
    				$icon = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", "8")
    				If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
    				$icon2 = "-1"
    				$sis = StringInStr($icon, ",", 0, -1)
    				If Not @error Then
    					$icon2 = StringTrimLeft($icon, $sis)
    					$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    				EndIf
    				GUICtrlSetImage(-1, $icon, $icon2)
    				$Ebene = $Ebene + 1
    
    			Case $iInsert = $arTemp[0]
    				; Dateiname
    				$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$iInsert], $Tree[$Ebene - 1])
    				$ext = StringTrimLeft($arTemp[$iInsert], StringInStr($arTemp[$iInsert], ".", 0, -1) - 1)
    				$icon = RegRead("HKCR\" & $ext, "")
    				$icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
    				If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
    				$icon2 = "-1"
    				$sis = StringInStr($icon, ",", 0, -1)
    				If Not @error Then
    					$icon2 = StringTrimLeft($icon, $sis)
    					$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    				EndIf
    ;~ 			 MsgBox(0,$icon2,$icon)
    				GUICtrlSetImage($Tree[$Ebene], $icon, $icon2)
                    $FileTable[$iFTNum][0] = $Tree[$Ebene]
                    $FileTable[$iFTNum][1] = $arFile[1]
                    $iFTNum = $iFTNum + 1
                    If UBound($FileTable,1) <= $iFTNum Then ReDim $FileTable[$iFTNum + 10000][2]
    ;~ 				GUICtrlSetOnEvent($Tree[$Ebene], "SelectFile")
    
    			Case Else
    				; Verzeichnisname
    				$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$iInsert], $Tree[$Ebene - 1])
    				$Ebene = $Ebene + 1
    
    		EndSelect
    	Next
    
    	For $iFile = 2 To $arFile[0]
    		$arTemp = StringSplit(StringStripCR($arFile[$iFile]), "\")
    		$iPos = StringInStr($arFile[$iFile], "\", 0, -1)
    		$strLeft = StringLeft($arFile[$iFile], $iPos)
    
    		; Ebenenkorrektur
    		$iPos2 = StringInStr($arFile[$iFile - 1], "\", 0, -1)
            $Ebene = $Ebene + (UBound(StringSplit($strLeft, "\"), 1) - UBound(StringSplit(StringLeft($arFile[$iFile - 1], $iPos2), "\"), 1))
    
    
        ControlSetText("dada","","Static1", $iFile & " / " & $arFile[0])
    
    		For $iSearch = 0 To $arTemp[0] - 1
    			If StringLeft($arFile[$iFile - 1], StringLen($strLeft)) = $strLeft Then
    				For $iInsert = $iSearch To 0 Step - 1
    
    					If UBound($Tree, 1) <= $Ebene Then ReDim $Tree[$Ebene + 1]
    
    					Select
    						Case $iInsert = 0
    							; Dateiname
    							If $Ebene = 0 Then $Ebene = 1
    							$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$arTemp[0] - $iInsert], $Tree[$Ebene - 1])
    							$ext = StringTrimLeft($arTemp[$arTemp[0] - $iInsert], StringInStr($arTemp[$arTemp[0] - $iInsert], ".", 0, -1) - 1)
    							$icon = RegRead("HKCR\" & $ext, "")
    							$icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
    							If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
    							$icon2 = "-1"
    							$sis = StringInStr($icon, ",", 0, -1)
    							If Not @error Then
    								$icon2 = StringTrimLeft($icon, $sis)
    								$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    							EndIf
    ;~ 			 MsgBox(0,$icon2,$icon)
    							GUICtrlSetImage($Tree[$Ebene], $icon, $icon2)
    ;~ 							GUICtrlSetOnEvent($Tree[$Ebene], "SelectFile")
                                $FileTable[$iFTNum][0] = $Tree[$Ebene]
                                $FileTable[$iFTNum][1] = $arFile[$iFile]
                                $iFTNum = $iFTNum + 1
                                If UBound($FileTable,1) <= $iFTNum Then ReDim $FileTable[$iFTNum + 10000][2]
    
    						Case $iInsert = $arTemp[0] - 1
    							; Laufwerksbezeichnung
    							ControlSetText("dada","","Static1", $arTemp[$arTemp[0] - $iInsert])
    							$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$arTemp[0] - $iInsert], $TreeView)
    							$icon = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", "8")
    							If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
    							$icon2 = "-1"
    							$sis = StringInStr($icon, ",", 0, -1)
    							If Not @error Then
    								$icon2 = StringTrimLeft($icon, $sis)
    								$icon = StringTrimRight($icon, StringLen($icon2) + 1)
    							EndIf
    							GUICtrlSetImage(-1, $icon, $icon2)
    							$Ebene = $Ebene + 1
    
    						Case Else
    							; Verzeichnisname
    							$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$arTemp[0] - $iInsert], $Tree[$Ebene - 1])
    							$Ebene = $Ebene + 1
    
    					EndSelect
    				Next
    				ExitLoop
    			Else
    				$Ebene = $Ebene - 1
    			EndIf
    			$iPos = StringInStr($strLeft, "\", 0, -2)
    			$strLeft = StringLeft($strLeft, $iPos)
    		Next
    	Next
        MsgBox(0,"Elemente im TreeView",GUICtrlSendMsg($TreeView, $TVM_GETCOUNT, 0, 0))
    	_GUICtrlTreeViewSort ($TreeView)
    EndFunc   ;==>MakeFileTree
    Alles anzeigen
  • Commander

    • bernd670
    • 20. Mai 2006 um 15:49

    Hallo,

    ich bin auf ein neues Problem gestoßen. Zwar hab ich es geschaft eine ca. 6MB große Datei in etwa 6 Minuten einzulesen (immerhin über 93000 Zeilen), allerdings kann der TreeView nicht mehr als 4089 Elemente aufnehmen. Es kann sich dabei nur um einen Fehler im TreeView handeln, da ich es jetzt schon mit mehreren Dateien probiert habe und immer die gleiche anzahl enthalten ist.

  • richtiges klammern setzen???

    • bernd670
    • 20. Mai 2006 um 10:22

    Hallo,

    ich meine schon die UserID, im ersten Script hängst du die Variable an, deren Wet folgendes Format hat:

    {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

    und in zweite Script steht dann:

    ...\Outlook\9375CFF0413111d3B88A00104B2A6676

  • richtiges klammern setzen???

    • bernd670
    • 20. Mai 2006 um 04:16

    Hallo,

    bist du dir sicher, das du im script 1, mit der richtigen User-ID arbeitest?
    Die User-ID die unter HKEY_CURRENT_USER\Identities\ zu finden ist, ist die Windows UserID und hat normalerweise folgendes Format {12345678-1234-1234-1234-123456789AB}.

  • Commander

    • bernd670
    • 18. Mai 2006 um 17:07

    Hallo,

    wenn die Date Leerzeilen enthält kommt es zu einer fehlerhaften Darstellung.
    Die folgenden Zeilen in der Funktion MakeFileTree nach _ArraySort($arFile,0,1) einfügen dann stimmt die Ausgabe wieder.

    Code
    ; Leerzeilen entfernen
        $iPos = 1
        While 1
            If Not stringlen(StringStripWS($arFile[1],15)) Then 
                _ArrayDelete($arFile,1)
                $arFile[0] = $arFile[0] - 1
            Else
                ExitLoop
            EndIf
            $iPos = $iPos + 1
        Wend
    Alles anzeigen
  • Anfängerproblem mit einem Script

    • bernd670
    • 18. Mai 2006 um 14:20

    Hi,

    einfach die Zeile in der der OK-Button erstellt wird, so schreiben: :musik2:

    Code
    $OK = GUICtrlCreateButton("OK", 16, 304, 331, 25, $BS_DEFPUSHBUTTON)

    PS: Benutze bitte die Tags (ohne Leerzeichen) [ C O D E ] und [ / C O D E ] zum darstellen von Codezeilen!!! :rolleyes:

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™