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. Oscar

Beiträge von Oscar

  • Oscar hat Geburtstag.

    • Oscar
    • 18. Januar 2010 um 20:04

    Ich feiere ja eigentlich erst am Wochenende, aber bei so vielen Glückwünschen muss ich ja mal ein Fass...äh eine Flasche aufmachen. PROST! :D

  • Treeview FileExplorer

    • Oscar
    • 18. Januar 2010 um 19:45

    Das rekursive einlesen des Inhaltsverzeichnisses einer ganzen Festplatte kann ja recht lange dauern. Wenn man dieses aber in einem Treeview haben will, dann gibt es nur diese Möglichkeit oder man liest das Verzeichnis ebenenweise (eine Verzeichnisebene nach der anderen) ein.
    Aber immer nur eine Ebene sieht nicht so toll aus, weil dann die Verzeichnisse kein Plus-Button haben (als Kennzeichen dafür, dass der Ordner nicht leer ist). Also muss man mindestens zwei Ebenen rekursiv einlesen und das ist (bzw. war :D ) gar nicht so einfach.

    Edit 18.12.2019:

    Ich hatte dieses alte Script ganz vergessen. Zum einlesen eines Verzeichnisses habe ich bereits eine bessere Version geschrieben ("New_SelectFilesOrFolder.au3" im Anhang).

    - Die zeigt die richtigen Icons zu den Dateien/Verzeichnissen an.

    - Man kann ein Verzeichnis oder eine/mehrere Datei(en) markieren.

    - Es gibt einen animierten Warte-Mauszeiger.

    - Der ausgewählte Pfad wird oben angezeigt.

    Edit 19.11.2010:
    - Es gab noch einen Bug mit ansonsten leeren Verzeichnissen, in denen sich aber Reparse Points befinden (z.B. "c:\Users\Default\Documents\"). Die Überprüfung mit IsArray war da etwas suboptimal. ^^

    Edit 19.11.2010:
    - Bei den symbolischen Links gab es noch einen Bug. Entfernt! (Danke, Kleiner!)
    - Es werden nun die Einstellungen zu versteckten Dateien und geschützten Systemdateien aus dem Explorer übernommen.

    Edit 18.11.2010: Geänderte Erkennung der Pluszeichen, womit jetzt auch die Tastatursteuerung möglich ist! (Danke, Großvater!)

    Edit 07.11.2010: Symbolische Links (Reparse Points) werden nicht Angezeigt! (Danke, Kleiner!)

    _GUICtrlTreeView_FileExplorer:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiTreeView.au3>
    #include <StructureConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $hGui = GUICreate('FileExplorer', 400, 400)

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

    Global Const $Delim = '\', $Delim1 = '|'

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

    Global $hTreeview = GUICtrlCreateTreeView(10, 10, 380, 360)
    Global $hWndTreeview = GUICtrlGetHandle($hTreeview)
    Global $hOk = GUICtrlCreateButton('Ok', 240, 375, 60, 22)
    Global $hCancel = GUICtrlCreateButton('Cancel', 320, 375, 60, 22)

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

    Global $hImage = _GUIImageList_Create(16, 16, 5, 1)
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 3) ; Verzeichnis-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 110) ; Verzeichnis-Icon mit Haken
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 1) ; Datei-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 5) ; Diskette
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 7) ; Wechseldatenträger
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 8) ; Festplatte
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 11) ; CDROM
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 12) ; Netzwerklaufwerk
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 53) ; Unbekannt
    _GUICtrlTreeView_SetNormalImageList($hTreeview, $hImage)

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

    GUISetState()
    GUICtrlSetStyle($hTreeview, Default, BitOR($WS_EX_COMPOSITED, $WS_EX_CLIENTEDGE))

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

    If ToolTip('Please wait...', Default, Default, 'Read Directory', 1) Then Local $aDrives = DriveGetDrive('ALL'), $iLWindex, $hRoot
    For $i = 1 To $aDrives[0]
    $iLWindex = 0
    Switch DriveGetType($aDrives[$i])
    Case 'Fixed'
    $iLWindex = 5
    Case 'CDROM'
    $iLWindex = 6
    Case 'RAMDisk'
    $iLWindex = 7
    Case 'Removable'
    $iLWindex = 4
    If StringLeft($aDrives[$i], 2) = 'a:' Or StringLeft($aDrives[$i], 2) = 'b:' Then $iLWindex = 3
    Case Else
    $iLWindex = 8
    EndSwitch
    $hRoot = _GUICtrlTreeView_Add($hTreeview, $hTreeview, StringUpper($aDrives[$i]), $iLWindex, $iLWindex)
    If DriveStatus($aDrives[$i]) <> 'READY' Then ContinueLoop
    If _GUICtrlTreeView_BeginUpdate($hTreeview) And _GUICtrlTreeView_FileExplorer($hTreeview, $hRoot, $aDrives[$i]) Then _GUICtrlTreeView_EndUpdate($hTreeview)
    Next
    ToolTip('')

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

    GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $hCancel
    Exit
    Case $hOk
    MsgBox(0, 'Selected Path/File', StringReplace(_GUICtrlTreeView_GetTree($hTreeview, _GUICtrlTreeView_GetSelection($hTreeview)), $Delim1, $Delim))
    EndSwitch
    WEnd

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

    Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hChild, $hITEM, $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $ilParam)
    If DllStructGetData($tNMTREEVIEW, 'hWndFrom') = $hWndTreeview Then
    Switch DllStructGetData($tNMTREEVIEW, 'Code')
    Case $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW
    Switch DllStructGetData($tNMTREEVIEW, 'Action')
    Case $TVE_EXPAND
    If ToolTip('Please wait...', Default, Default, 'Read Directory', 1) Then $hITEM = DllStructGetData($tNMTREEVIEW, 'NewhItem')
    If _GUICtrlTreeView_GetExpanded($hTreeview, $hITEM) Then Return $GUI_RUNDEFMSG
    $hChild = _GUICtrlTreeView_GetFirstChild($hTreeview, $hITEM)
    If Not $hChild Then Return $GUI_RUNDEFMSG
    If _GUICtrlTreeView_BeginUpdate($hTreeview) Then _GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    _GUICtrlTreeView_FileExplorer($hTreeview, $hChild, StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), $Delim1, $Delim))
    Do
    $hChild = _GUICtrlTreeView_GetNextChild($hTreeview, $hChild)
    If Not $hChild Then ExitLoop
    _GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    _GUICtrlTreeView_FileExplorer($hTreeview, $hChild, StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), $Delim1, $Delim))
    Until False
    If _GUICtrlTreeView_EndUpdate($hTreeview) Then ToolTip('')
    EndSwitch
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_NOTIFY

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

    Func _GUICtrlTreeView_FileExplorer($hTreeview, $hITEM, $sPath)
    Local $sFileList, $sFolderList, $aDirList, $hSearch, $sFile
    Local $iHidden = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden') - 1
    Local $iSuperHidden = Not RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden')
    $hSearch = FileFindFirstFile($sPath & $Delim & '*')
    If $hSearch = -1 Then Return True
    Do
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    Switch @extended
    Case False
    If $iHidden And StringInStr(FileGetAttrib($sPath & $Delim & $sFile), 'H') Then ContinueLoop
    If $iSuperHidden And StringInStr(FileGetAttrib($sPath & $Delim & $sFile), 'S') Then ContinueLoop
    $sFileList &= $sFile & $Delim1
    Case True
    If _IsReparsePoint($sPath & $Delim & $sFile) Then ContinueLoop
    $sFolderList &= $sFile & $Delim1
    EndSwitch
    Until False
    FileClose($hSearch)
    If $sFolderList & $sFileList = '' Then Return True
    $aDirList = StringSplit(StringTrimRight($sFolderList & $sFileList, 1), $Delim1, 2)
    For $sFile In $aDirList
    If StringInStr(FileGetAttrib($sPath & $Delim & $sFile), 'D') Then
    _GUICtrlTreeView_AddChild($hTreeview, $hITEM, $sFile, 0, 1)
    Else
    _GUICtrlTreeView_AddChild($hTreeview, $hITEM, $sFile, 2, 2)
    EndIf
    Next
    Return True
    EndFunc ;==>_GUICtrlTreeView_FileExplorer

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

    Func _IsReparsePoint($FLS) ; progandy
    Dim Static $K32 = DllOpen('kernel32.dll')
    Dim $DA = DllCall($K32, 'dword', 'GetFileAttributesW', 'wstr', $FLS)
    If @error Then Return SetError(1, @error, False)
    Return BitAND($DA[0], 1024) = 1024
    EndFunc ;==>_IsReparsePoint

    [/autoit]

    Dateien

    _GUICtrlTreeView_FileExplorer.au3 5,81 kB – 1.614 Downloads New_SelectFilesOrFolder.au3 11,43 kB – 477 Downloads
  • CryptChat

    • Oscar
    • 18. Januar 2010 um 18:00

    In dem Fall ist _GetIP() fehlgeschlagen. Vermutlich blockt eine Firewall das Programm.
    Und nicht die Port-Weiterleitung im Router vergessen.

  • Oscar hat Geburtstag.

    • Oscar
    • 18. Januar 2010 um 11:24

    @All: Ich danke euch für die vielen Glückwünsche. Und wieder ein Jahr älter, aber mit AutoIt zu programmieren macht mir immer noch Spaß, was natürlich auch an diesem tollen Forum und seinen Usern liegt. Auf ins nächste Jahr... :D

    Noch dazu habe ich jetzt 2 Wochen Urlaub. Einfach mal ausruhen... :)

    Zitat von AutoBert

    Es ist mir ein ganz besonderes Anliegen dir zur gratulieren, denn ohne dich hätte ich vielleicht den Weg zu AutoIt verpasst


    Nanu? Was habe ich denn besonderes getan?

  • CryptChat

    • Oscar
    • 18. Januar 2010 um 09:39

    So, die nächste Version ist fertig. Es sind hauptsächlich Fehlerbeseitigungen (siehe Post#1).

  • Chatbox-UDF

    • Oscar
    • 18. Januar 2010 um 09:20

    Es gibt jetzt eine neue Version (siehe Post #1). Ein paar Bugs wollten entfernt werden. :)

  • Processclose Problem

    • Oscar
    • 18. Januar 2010 um 05:55

    Na toll, für einen Bot... :cursing:
    [Thread closed]

  • Processclose Problem

    • Oscar
    • 17. Januar 2010 um 23:58

    Versuch's mal so:

    Spoiler anzeigen
    [autoit]


    Func _Pause()
    SoundPlay(@ScriptDir & "\data\paused.wav",0)
    For $i = 1 To 12
    $PID = ProcessExists($i & "-Client-PT.exe")
    If $PID Then ProcessWaitClose($PID, 1000)
    $PID = ProcessExists($i & "-Client.exe")
    If $PID Then ProcessWaitClose($PID, 1000)
    Next
    ToolTip('Script is "Paused". END to close Script',0,0)
    EndFunc

    [/autoit]
  • Script wirft Probleme mit MessageLoop und mit OnEvent Modus auf

    • Oscar
    • 17. Januar 2010 um 21:27

    Wieso? OnClick gibt es doch! ^^

    Das ist im OnEventMode auch einfacher (mal ein Beispiel):

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt('GUIOnEventMode', 1)

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

    $hGui = GUICreate('Treeview-Select', 640, 480)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $hTreeview = GUICtrlCreateTreeView(10, 10, 500, 400)
    $context = GUICtrlCreateContextMenu($hTreeview)
    $info = GUICtrlCreateMenuItem('Info', $context)
    GUICtrlSetOnEvent(-1, '_InfoMenu')
    For $i = 0 To 9
    $tmp = GUICtrlCreateTreeViewItem('Item ' & $i, $hTreeview)
    GUICtrlSetOnEvent(-1, '_SelectItem')
    For $j = 0 To 4
    GUICtrlCreateTreeViewItem('Parent ' & $i & ' Child '& $j, $tmp)
    GUICtrlSetOnEvent(-1, '_SelectItem')
    Next
    Next
    $hStatus = GUICtrlCreateLabel('', 0, 464, 640, 16, 0x1000)
    GUISetState()

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

    While True
    Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _SelectItem()
    $sSelected = ControlTreeView($hGui, '', $hTreeview, 'GetSelected')
    GUICtrlSetData($hStatus, 'Item selected = ' & StringReplace($sSelected, '|', ' / '))
    EndFunc

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

    Func _InfoMenu()
    $sSelected = ControlTreeView($hGui, '', $hTreeview, 'GetSelected')
    ToolTip(StringReplace($sSelected, '|', ' / '))
    EndFunc

    [/autoit]
  • TCPListen() - Verbindung von jeder IP??

    • Oscar
    • 17. Januar 2010 um 19:05

    Für TCPListen brauchst Du nur Deine eigene. Dort wird die IP-Adresse von der Netzwerkkarte eingegeben, die die Verbindung herstellen soll.
    Aber es scheint so, als funktioniert hier auch die Angabe von "0", um eine eingehende Verbindung zu erkennen. Mangels zweiter Netzwerkkarte kann ich aber nicht testen, ob die Erkennung wirklich funktioniert oder ob dort eine Standardadresse eingesetzt wird.

  • Chatbox-UDF

    • Oscar
    • 17. Januar 2010 um 18:37

    Mach es doch einfach so, dass Du den übertragenen String testest. Wenn keine Leerzeichen enthalten sind, dann nach x Zeichen splitten und getrennt mit _Chatbox_SetData in die Chatbox schreiben.

  • Chatbox-UDF

    • Oscar
    • 17. Januar 2010 um 17:56

    Ein horizontales scrollen findet doch nur statt, wenn Du in der Zeile kein Leerzeichen benutzt, ansonsten findet bei HTML am rechten Rand ein Zeilenumbruch statt.
    Und das finde ich sogar ganz sinnvoll, weil dann evtl. Links (mit ellenlangen URLs) nicht umgebrochen werden.

  • Bild ermitteln

    • Oscar
    • 16. Januar 2010 um 18:40

    So ist es noch besser:

    [autoit]


    $HTML = FileRead(@ScriptDir & '\source.htm')
    $ImgPath = StringRegExpReplace($HTML, '(?s).+<img src="(http://static-a\d+\.stayblue\.de/\d+/user/profil/normal/\d+/.+?\.jpg)".+', '$1')
    MsgBox(0,0,$ImgPath)

    [/autoit]
  • Bild ermitteln

    • Oscar
    • 16. Januar 2010 um 18:25

    So:

    [autoit]


    $HTML = FileRead(@ScriptDir & '\source.htm')
    $ImgPath = StringRegExpReplace($HTML, '(?s).+<img src="(http://static-a1.stayblue.de/.+?/user/profil/normal/.+?/.+?\.jpg)".+', '$1')
    MsgBox(0,0,$ImgPath)

    [/autoit]
  • Bild ermitteln

    • Oscar
    • 16. Januar 2010 um 17:50

    Und wo ist Dein Script?
    Du erwartest doch jetzt nicht, dass wir Dir das schreiben...

  • Bild ermitteln

    • Oscar
    • 16. Januar 2010 um 17:42

    Dann präzisiere Deine Frage und Du erhälst eine zufriedenstellende Antwort oder anders ausgedrückt meine Kristallkugel ist gerade beim Polierer. :D

  • Bild ermitteln

    • Oscar
    • 16. Januar 2010 um 17:30

    Ist doch relativ einfach:

    [autoit]


    $string = '<a href="http://static-a1.stayblue.de/1/user/profil/big/32/45d81577ef340337cee4d3a06365f893.jpg" onClick="myLightbox.start(this,true); return false;" target="_blank"><img src="http://static-a1.stayblue.de/1/user/profil/normal/32/45d81577ef340337cee4d3a06365f893.jpg" border="0" width="233" height="310" alt=" __Luisa__" title=" __Luisa__"></a></div>'

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

    $ImgPath = StringRegExpReplace($string, '(?s).+<img src="(.+?)".+', '$1')
    MsgBox(0, 0, $ImgPath)

    [/autoit]
  • CryptChat

    • Oscar
    • 15. Januar 2010 um 17:16

    chrisatack: Stimmt! So ein dämlicher Bug! :pinch:
    Ist in der nächsten Version behoben. Danke für die Meldung! :)

    Magnus: Die Groß-/Kleinschreibung ist beim Usernamen egal. Nur beim Passwort muss sie eingehalten werden, was aber auch sinnvoll ist.

  • _Pop3-Udf (V1.03)

    • Oscar
    • 14. Januar 2010 um 21:03

    Funktioniert, auch mit leerem Postfach! Gute Arbeit! :thumbup:

  • CryptChat

    • Oscar
    • 14. Januar 2010 um 19:56

    Bei mir schon! :)
    Beschreib mal genauer...

    Vielleicht falsch eingegeben? Befehl muss lauten: /w "username" Nachricht
    Der Username muss in Anführungszeichen stehen.

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™