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

Beiträge von BugFix

  • While schleife wird nicht abgefragt

    • BugFix
    • 6. April 2008 um 20:27

    Auf den ersten Blick würde ich vermuten, dass du die Schleife

    [autoit]

    For $read_line = 1 to 18

    [/autoit]

    nicht verläßt.
    Laß dir doch mal die Werte der Abbruchbedingung in die Console ausgeben, dann siehst du ja ob und warum es hängt.

  • Ordner in Laufwerk suchen...

    • BugFix
    • 5. April 2008 um 13:35

    Probier mal das:

    Spoiler anzeigen
    [autoit]

    Global $sourcePath = @ScriptDir
    Global $application = '\gepackt.exe'
    Global $SuchOrdner = 'zu suchender Ordner'
    Global $Daten = _GetFileList($StartPfad, "n",1) ; erzeugt Array mit allen Ordnernamen
    Global $ret = _ArraySearch($Daten, $SuchOrdner,1,0,0,True) ; durchsucht nach Ordner
    ;~ If $ret > 0 Then MsgBox(0, '', $Daten[$ret]) ; gibt den kpl.Pfad zurück
    If $ret > 0 Then
    FileCopy($sourcePath & $application, $Daten[$ret] & $application, 1) ; EXE in gefundenen Ordner kopieren
    Run($Daten[$ret] & $application)
    Else
    MsgBox(0, 'Fehler', 'Ordner nicht vorhanden')
    EndIf

    [/autoit]
  • Editbox auslesen und in Script einfügen

    • BugFix
    • 5. April 2008 um 13:19

    Beruhigt mich ja, dass ich das nicht verstehen muß. :rofl:
    Machbar ist, dass du in deinem Skript eine Variable für eine Codezeile bereithältst, diese Codezeile einliest und dann im Skript per Execute dieser Code ausgeführt wird.
    Aber ein Skript zur Laufzeit ergänzen kannst du knicken. Ist auch völlig sinnfrei.

    Übrigens: Wenn du meinst, dass wir nicht verstehen müssen, worum es geht, kannst du dir auch die Frage schenken. Denn ohne den Hintergrund eines Problems zu kennen, ist das wie Stochern im Nebel - es kommt nix bei raus. :P

  • Editbox auslesen und in Script einfügen

    • BugFix
    • 5. April 2008 um 11:41

    Versteh ich nicht. Du willst ein Skript ausführen und dabei neuen Code in dieses Skript hineinschreiben? ?( :wacko:

  • md5 erstellen

    • BugFix
    • 4. April 2008 um 23:44

    Das ist doch eine Funktion - was willst du da für ein Bsp?
    Du übergibst einen String und bekommst einen Hash zurück.

    [autoit]

    $MD5_Hash = md5($sMessage)

    [/autoit]
  • md5 erstellen

    • BugFix
    • 4. April 2008 um 22:42

    Guckst du: http://www.autoitscript.com/forum/index.php?showtopic=21010&hl=hash

  • Ordner in Laufwerk suchen...

    • BugFix
    • 4. April 2008 um 20:50
    Zitat von Alina


    Wie macht man es, das er in das Verzeichnis springt und nicht die Msg-Ausgabe ausführt?

    Welches Programm soll denn in dieses Verzeichnis wechseln?

  • Probleme bei befüllung einer Textarea

    • BugFix
    • 4. April 2008 um 20:34

    Guckst du hier: ;)

    Spoiler anzeigen
    [autoit]

    #include <GuiListBox.au3>
    #include <File.au3>

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

    Global $aFile, $aFolder, $aPath[1] = [@HomeDrive & '\'], $currPath, $sUp = '[ EBENE HÖHER ]'
    Global $Safed = '[SHOC]' ; mit diesen Attributen gesperrt für: Ausführen, Umbenennen, Löschen
    Global $Application, $RunPath
    Global $aZuordnung[2][2] = [ _
    ['ico|bmp|jpg', 'mspaint.exe '], _
    ['txt|ini|log', 'notepad.exe ']]; Leerzeichen hinter Dateinamen ist wichtig für Aufruf!
    ; Je nach Anwendung kann es notwendig sein, den kpl. Pfad anzugeben!!

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

    $GUI = GUICreate("Simple Explorer",400,300)
    $label = GUICtrlCreateLabel('', 5, 5, 390, 53)
    $List = GUICtrlCreateList( '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
    $hList = GUICtrlGetHandle($List)
    $menu = GUICtrlCreateContextMenu($List)
    $itemRun = GUICtrlCreateMenuItem('Ausführen', $menu)
    $itemShape = GUICtrlCreateMenuItem('', $menu)
    $itemCopy = GUICtrlCreateMenuItem('Kopieren', $menu)
    $itemPaste = GUICtrlCreateMenuItem('Einfügen', $menu)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $itemRen = GUICtrlCreateMenuItem('Umbenennen', $menu)
    $itemShape = GUICtrlCreateMenuItem('', $menu)
    $itemDel = GUICtrlCreateMenuItem('Löschen', $menu)
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    _WriteList($aPath[0])

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $itemRun
    _RunFile()
    Case $itemCopy
    _CopyFile()
    Case $itemPaste
    _PasteFile()
    Case $itemRen
    _RenFile()
    Case $itemDel
    _DelFile()
    EndSwitch
    Wend

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

    Func _WriteList($PATH)
    _GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
    $aFolder = _FileListToArray($PATH, '*', 2)
    $aFile = _FileListToArray($PATH, '*', 1)
    If UBound($aPath) > 1 Then _GUICtrlListBox_AddString($hList, $sUp)
    If IsArray($aFolder) Then
    _GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
    For $i = 1 To UBound($aFolder) -1
    _GUICtrlListBox_AddString($hList, $aFolder[$i])
    Next
    EndIf
    If IsArray($aFile) Then
    _GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
    For $i = 1 To UBound($aFile) -1
    _GUICtrlListBox_AddString($hList, $aFile[$i])
    Next
    EndIf
    GUICtrlSetData($label, $PATH)
    EndFunc

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

    Func _ListDblClick()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    Local $tmpPath = ''
    If $str = $sUp Then
    ReDim $aPath[UBound($aPath)-1]
    $currPath = $aPath[UBound($aPath)-1]
    _WriteList($currPath)
    Else
    $currPath = $aPath[UBound($aPath)-1] & $str & '\' ; neuer Pfad = letzter Pfad + geklickter Pfad
    If Not StringRegExp(FileGetAttrib($currPath), 'D') Then ; ist es kein Ordner ?
    _RunFile()
    Else
    ReDim $aPath[UBound($aPath)+1]
    $aPath[UBound($aPath)-1] = $currPath ; neuen Pfad hinzufügen
    _WriteList($currPath)
    EndIf
    EndIf
    EndFunc

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

    Func _RunFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    $RunPath = $aPath[UBound($aPath)-1] & $str
    $Application = _GetApplication($RunPath)
    If $Application = -1 Then ; keine Anwendung hinterlegt
    ShellExecuteWait($RunPath) ; mit Standardanwendung ausführen
    Else
    RunWait($Application & '"' & $RunPath & '"') ; Dateipfad muß in "" eingebettet sein!
    EndIf
    EndFunc

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

    Func _GetApplication($PATH)
    Local $SUFFIX = StringRight($PATH, StringLen($PATH)-StringInStr($PATH, '.', 1, -1))
    For $i = 0 To UBound($aZuordnung) -1
    If StringInStr($aZuordnung[$i][0], $SUFFIX) Then Return $aZuordnung[$i][1]
    Next
    Return -1 ; keine Anwendung hinterlegt
    EndFunc

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

    Func _CopyFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' ist keine Datei')
    ClipPut($aPath[UBound($aPath)-1] & $str)
    GUICtrlSetState($itemPaste, $GUI_ENABLE)
    EndFunc

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

    Func _PasteFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If Not StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' - ist kein Ordner')
    Local $tmp = ClipGet(), $pos = StringInStr($tmp, '\', -1)
    Local $file = StringRight($tmp, StringLen($tmp)-$pos)
    If FileExists($aPath[UBound($aPath)-1] & $str & '\' & $file) Then $file = 'Kopie von ' & $file
    FileCopy($tmp, $aPath[UBound($aPath)-1] & $str & '\' & $file)
    _WriteList($aPath[UBound($aPath)-1])
    GUICtrlSetState($itemPaste, $GUI_DISABLE)
    EndFunc

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

    Func _RenFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    Local $tmp = InputBox('Umbenennen', 'Neuer Name:' & @LF & @LF & $aPath[UBound($aPath)-1], $str)
    If $tmp <> '' Then FileMove($aPath[UBound($aPath)-1] & $str, $aPath[UBound($aPath)-1] & $tmp)
    _WriteList($aPath[UBound($aPath)-1])
    EndFunc

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

    Func _DelFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    FileDelete($aPath[UBound($aPath)-1] & $str)
    _WriteList($aPath[UBound($aPath)-1])
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hList) Then $hWndListBox = GUICtrlGetHandle($hList)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $hList, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
    _ListDblClick()
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]
  • TaskManager sperren

    • BugFix
    • 4. April 2008 um 20:14
    Zitat von blubbstar

    Soweit ich weiss ist das Programm aber dafür da, das es den gesperrten Taskmanager wieder entsperrt ;).

    Genau das ist der Sinn. Entstanden ist es aus der Tatsache, dass ein Trojaner diesen Schlüssel angelegt hatte, um zu verhindern dass man dessen Prozeß killen kann. ;)
    Hat ihm nicht geholfen, hab ihm trotzdem den Garaus gemacht. :D
    Aber dabei kam mir der Gedanke, dass man das auch zur Skriptsicherung nutzen kann.

  • Resource DLL Problem

    • BugFix
    • 2. April 2008 um 22:46

    Werden nicht auch bei DLL die Dateien mit 0 beginnend angesprochen?

  • Inhalt einer Website auslesen (InternetExplorer7)

    • BugFix
    • 2. April 2008 um 22:04

    Genau, meinte ich :D
    Im Editor brauch ich nur sis dafür schreiben :P , aber hierdrin muß ich jeden Befehl selbst tippen, da kann man schon mal was verwurschteln :rofl:

  • Inhalt einer Website auslesen (InternetExplorer7)

    • BugFix
    • 2. April 2008 um 21:57

    Warum liest du die Source aus, nimm doch den Text.

    [autoit]

    $txt = _IEBodyReadText($oIE)
    If StringInString($txt, 'Suchbegriff') Then MsgBox(0, '', 'gefunden')

    [/autoit]
  • Bild von Hp in ner MsgBox anzeigen?

    • BugFix
    • 2. April 2008 um 11:53

    Man kann es natürlich umständlich machen :D - aber es gibt doch Funktionen, die dir die Links selektieren.

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    $PicPath = @ScriptDir & '\Secure.gif'
    $url = 'http://www.sceneload.to/?p=Userupload'
    $oIE = _IECreate($url,0,0)
    $oLinks = _IEImgGetCollection($oIE)
    For $Link In $oLinks
    If StringInStr($Link.href, 'http://www.sceneload.to/secure/') Then
    $SecureLink = $Link.href
    ExitLoop
    EndIf
    Next
    InetGet($SecureLink, $PicPath, 1)
    _IEQuit($oIE)
    MsgBox(0, '', 'Fertig')

    [/autoit]


    Alerdings ist diese Website sehr mit Vorsicht zu genießen. Wer versteckte Links anbringt ("Ihr Browser verhindert einen schnellen Downlad. Zur Problembehebung klicken Sie bitte hier." ==> Link auf usenext), ist für mich alles andere als seriös. Ebenso Warez-Links etc.
    Ich hoffe deine Programme laufen in einer Sandbox, wenn du dich da einwählst. Denn akuter Virenbefall ist vorprogrammiert.

  • _ADDeleteObject Wie User OU herausfinden

    • BugFix
    • 2. April 2008 um 11:08

    Ich hab im Web ein Skript gefunden, dass ich mal AutoIt-fähig gemacht habe.
    Ziel des Skripts ist eine automatische Anmeldung und dafür die notwendigen Daten (u.a. die OU des Users) zu ermitteln.
    Kann es selbst nicht testen, weiß also nicht ob es wirklich funktioniert.
    Vielleicht bringt es dich weiter.

    Spoiler anzeigen
    [autoit]

    ; Create all necessary COM objects.
    ;--------------------------------------------------------------------------
    $WSHShell = ObjCreate("WScript.Shell")
    $AppShell = ObjCreate("Shell.Application")
    $WSHNetwork = ObjCreate("WScript.Network")
    $WSHfso = ObjCreate("Scripting.FileSystemObject")
    $objADSysInfo = ObjCreate("ADSystemInfo")
    $objFavoritesFolderRef = $AppShell.Namespace('FAVORITES')
    $objFavoritesFolder = $objFavoritesFolderRef.Self
    $objNetHoodFolderRef = $AppShell.Namespace('NETHOOD')
    $objNetHoodFolder = $objNetHoodFolderRef.Self
    $FavoritesDir = $objFavoritesFolder.Path
    $NetHoodDir = $objNetHoodFolder.Path

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

    ; find the domain name and login-parameters
    ;--------------------------------------------------------------------------
    $strComputer = $WSHNetwork.ComputerName
    $objDomain = ObjGet("LDAP://rootDse")
    $strConfigNC = $objDomain.Get("configurationNamingContext")
    $SiteName = $objADSysInfo.SiteName
    $objSite = ObjGet("LDAP://CN=" & $SiteName & ",CN=Sites," & $strConfigNC)
    $SiteDesc = $objSite.Get("description")
    $DomainString = $objDomain.Get("dnsHostName")
    $WinDir = $WshShell.ExpandEnvironmentStrings("%WinDir%")
    $clientname = $WshShell.ExpandEnvironmentStrings("%clientname%")
    $UserString = $WSHNetwork.UserName
    $AdsPath = $objDomain.ADsPath($UserString)
    $adsUser = ObjGet($AdsPath)
    $adsParent = ObjGet($adsUser.Parent)
    $UserOU = $adsParent.Get("ou")
    $UserObj = ObjGet("WinNT://" & $DomainString & "/" & $UserString)
    $ADSCompPath = $objDomain.ADsPath($strComputer)
    $CompObj = ObjGet($ADSCompPath)

    [/autoit]
  • Probleme bei befüllung einer Textarea

    • BugFix
    • 2. April 2008 um 10:15
    Zitat von TKH

    Gibt es dort auch die Möglichkeit zusagen mit welchem Programm eine Datei geöffnet werden soll?


    Klar, du kannst ja die Dateiendung abfragen und in Abhängigkeit davon ein bestimmtes Programm aufrufen.
    Hinterleg dir beim Start ein 2D-Array mit dem Aufbau:
    [n][0] = Dateiendung(en)
    [n][1] = zugehöriger Programmpfad

    Hier mal ein Bsp. - kannst es ja dann einbauen.

    Spoiler anzeigen
    [autoit]

    Global $aZuordnung[2][2] = [ _
    ['ico|bmp|jpg', 'mspaint.exe '], _
    ['txt|ini|log', 'notepad.exe ']]; Leerzeichen hinter Dateinamen ist wichtig für Aufruf!

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

    $PicPath = "C:\Dokumente und Einstellungen\Standard\Eigene Dateien\Eigene Bilder\pda.ico"
    $Application = _GetApplication($PicPath)
    If $Application = -1 Then ; keine Anwendung hinterlegt
    ShellExecuteWait($PicPath) ; mit Standardanwendung ausführen
    Else
    RunWait($Application & '"' & $PicPath & '"') ; Dateipfad muß in "" eingebettet sein!
    EndIf

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

    Func _GetApplication($PATH)
    Local $SUFFIX = StringRight($PATH, StringLen($PATH)-StringInStr($PATH, '.', 1, -1))
    For $i = 0 To UBound($aZuordnung) -1
    If StringInStr($aZuordnung[$i][0], $SUFFIX) Then Return $aZuordnung[$i][1]
    Next
    Return -1 ; keine Anwendung hinterlegt
    EndFunc

    [/autoit]
  • Problem bei Variablenzuweisung aus Array

    • BugFix
    • 2. April 2008 um 09:12

    Dann ist die Funktion nicht erfolgreich, füge eine Fehlerauswertung ein:

    Code
    $cp = GUIGetCursorInfo() 
    If Not IsArray($cp) Then Exit MsgBox(0, '', 'Cursor-Info konnte nicht ermittelt werden)
    GUICtrlSetData ($mx,$cp[0]+3)


    Mist, die AutoIt-Code-Darstellung funzt grad nicht.

    Edit:
    Vielleicht drauf achten: "The mouse cursor position is successful only on an window created by a GUICreate. "
    Oder einfach mal versuchen, das Handle mit zu übergeben: $cp = GUIGetCursorInfo($Handle-GUI)

    Edit2:
    Verwende doch

    [autoit]

    #Include <WinAPI.au3>
    $cp = _WinAPI_GetCursorInfo()

    [/autoit]

    Damit solltest du keine Probleme haben.

  • Probleme bei befüllung einer Textarea

    • BugFix
    • 2. April 2008 um 09:05

    Ja klar, mit ShellExecute / ShellExecuteWait wird das mit der Datei verknüpfte Programm gestartet.
    Ich habs mal hier als Bsp. für einen Simple Explorer gemacht.
    Die ComboBox habe ich hier rausgelassen, hier kannst du dich mit Doppelklick bewegen, ist einfacher.
    Weitere Optionen über Kontextmenü (Ausführen bei Ordner öffnet diesen im Explorer/ Kopieren/ Einfügen/ Umbenennen/ Löschen).
    Außerdem findest du eine Variable $Safed - dort sind die Attribute hinterlegt, für Dateien, die für: Ausführen, Umbenennen, Löschen gesperrt sind.

    Simple Explorer
    [autoit]

    #include <GuiListBox.au3>
    #include <File.au3>

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

    Global $aFile, $aFolder, $aPath[1] = [@HomeDrive & '\'], $currPath, $sUp = '[ EBENE HÖHER ]'
    Global $Safed = '[SHOC]' ; mit diesen Attributen gesperrt für: Ausführen, Umbenennen, Löschen

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

    $GUI = GUICreate("Simple Explorer",400,300)
    $label = GUICtrlCreateLabel('', 5, 5, 390, 53)
    $List = GUICtrlCreateList( '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
    $hList = GUICtrlGetHandle($List)
    $menu = GUICtrlCreateContextMenu($List)
    $itemRun = GUICtrlCreateMenuItem('Ausführen', $menu)
    $itemShape = GUICtrlCreateMenuItem('', $menu)
    $itemCopy = GUICtrlCreateMenuItem('Kopieren', $menu)
    $itemPaste = GUICtrlCreateMenuItem('Einfügen', $menu)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $itemRen = GUICtrlCreateMenuItem('Umbenennen', $menu)
    $itemShape = GUICtrlCreateMenuItem('', $menu)
    $itemDel = GUICtrlCreateMenuItem('Löschen', $menu)
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    _WriteList($aPath[0])

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $itemRun
    _RunFile()
    Case $itemCopy
    _CopyFile()
    Case $itemPaste
    _PasteFile()
    Case $itemRen
    _RenFile()
    Case $itemDel
    _DelFile()
    EndSwitch
    Wend

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

    Func _WriteList($PATH)
    _GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
    $aFolder = _FileListToArray($PATH, '*', 2)
    $aFile = _FileListToArray($PATH, '*', 1)
    If UBound($aPath) > 1 Then _GUICtrlListBox_AddString($hList, $sUp)
    If IsArray($aFolder) Then
    _GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
    For $i = 1 To UBound($aFolder) -1
    _GUICtrlListBox_AddString($hList, $aFolder[$i])
    Next
    EndIf
    If IsArray($aFile) Then
    _GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
    For $i = 1 To UBound($aFile) -1
    _GUICtrlListBox_AddString($hList, $aFile[$i])
    Next
    EndIf
    GUICtrlSetData($label, $PATH)
    EndFunc

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

    Func _ListDblClick()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    Local $tmpPath = ''
    If $str = $sUp Then
    ReDim $aPath[UBound($aPath)-1]
    $currPath = $aPath[UBound($aPath)-1]
    Else
    $currPath = $aPath[UBound($aPath)-1] & $str & '\' ; neuer Pfad = letzter Pfad + geklickter Pfad
    If Not StringRegExp(FileGetAttrib($currPath), 'D') Then _RunFile() ; ist es kein Ordner ?
    ReDim $aPath[UBound($aPath)+1]
    $aPath[UBound($aPath)-1] = $currPath ; neuen Pfad hinzufügen
    EndIf
    _WriteList($currPath)
    EndFunc

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

    Func _RunFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    ShellExecuteWait($aPath[UBound($aPath)-1] & $str)
    EndFunc

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

    Func _CopyFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' ist keine Datei')
    ClipPut($aPath[UBound($aPath)-1] & $str)
    GUICtrlSetState($itemPaste, $GUI_ENABLE)
    EndFunc

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

    Func _PasteFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If Not StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' - ist kein Ordner')
    Local $tmp = ClipGet(), $pos = StringInStr($tmp, '\', -1)
    Local $file = StringRight($tmp, StringLen($tmp)-$pos)
    If FileExists($aPath[UBound($aPath)-1] & $str & '\' & $file) Then $file = 'Kopie von ' & $file
    FileCopy($tmp, $aPath[UBound($aPath)-1] & $str & '\' & $file)
    _WriteList($aPath[UBound($aPath)-1])
    GUICtrlSetState($itemPaste, $GUI_DISABLE)
    EndFunc

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

    Func _RenFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    Local $tmp = InputBox('Umbenennen', 'Neuer Name:' & @LF & @LF & $aPath[UBound($aPath)-1], $str)
    If $tmp <> '' Then FileMove($aPath[UBound($aPath)-1] & $str, $aPath[UBound($aPath)-1] & $tmp)
    _WriteList($aPath[UBound($aPath)-1])
    EndFunc

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

    Func _DelFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    FileDelete($aPath[UBound($aPath)-1] & $str)
    _WriteList($aPath[UBound($aPath)-1])
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hList) Then $hWndListBox = GUICtrlGetHandle($hList)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $hList, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
    _ListDblClick()
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]

    Dateien

    SimpleExplorer.au3 5,5 kB – 152 Downloads
  • Parmeter übergeben

    • BugFix
    • 1. April 2008 um 18:10
    Zitat

    Ich will aber vermeiden das mein save_data.au3 immer
    nachsehen muss ob eine Änderung vorliegt.
    Dadurch habe ich immer eine Verzögerung.

    Also dann solltest du dir ernsthaft überlegen, den 286-er Rechner endlich zu verschrotten (denn nur auf solch alten Kisten stelle ich mir das evtl. mit Verzögerung vor).
    Das Skript im Leerlauf nimmt ca. 3% CPU-Last, Werte je nach PC leicht variierend. Im Moment des Dateilesens steigt das auf vllt. 40 % an. Wenn du nicht grade ein paar hundert Einträge dadrin hast, merkst du davon garnix. ;)

  • Parmeter übergeben

    • BugFix
    • 1. April 2008 um 13:11

    Deine Frage ist zwar nicht sehr aussagekräftig aber ich vermute folgendes:
    - Dein Programm ist ein Sicherungsprogramm
    - aus variablen Pfaden soll gesichert werden

    Leg eine Datei an, z.B. SaveQueue.txt und hinterlege dort immer bei Bedarf die Pfade der zu sicherneden Daten.
    Dein Sicherungsprogramm schaut in von dir festgelegten Intervallen nach, ob etwas in der Datei steht. Wenn ja werden die Daten der Pfade gesichert und der entsprechende Eintrag aus der Datei gelöscht.

  • Probleme bei befüllung einer Textarea

    • BugFix
    • 1. April 2008 um 10:42

    Hier mal ein Bsp.:

    Spoiler anzeigen
    [autoit]

    #Include <GuiComboBox.au3>
    #include <GuiListBox.au3>
    #include <File.au3>
    Global $aFile, $aFolder, $sTmp, $Path = "C:\Programme\"

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

    $GUI = GUICreate("ComboAddDir",400,300)
    $Combo = GUICtrlCreateCombo("", 2, 2, 396, 296)
    $Lesen = GUICtrlCreateButton("Lesen",20,30)
    $hList = _GUICtrlListBox_Create($GUI, '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER) )
    GUISetState(@SW_SHOW)

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

    _GUICtrlComboBox_AddDir ($Combo, $Path & '*', $DDL_DIRECTORY + $DDL_EXCLUSIVE)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Lesen
    _GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
    $sTmp = GUICtrlRead($Combo)
    If $sTmp <> '' Then
    $sTmp = StringTrimLeft(StringTrimRight(GUICtrlRead($Combo), 1), 1)
    $aFolder = _FileListToArray($Path & $sTmp, '*', 2)
    $aFile = _FileListToArray($Path & $sTmp, '*', 1)
    If IsArray($aFolder) Then
    _GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
    For $i = 1 To UBound($aFolder) -1
    _GUICtrlListBox_AddString($hList, $aFolder[$i])
    Next
    EndIf
    If IsArray($aFile) Then
    _GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
    For $i = 1 To UBound($aFile) -1
    _GUICtrlListBox_AddString($hList, $aFile[$i])
    Next
    EndIf
    EndIf
    EndSwitch
    Wend

    [/autoit]

    Edit: Habs mal noch geändert um Ordner und Dateien getrennt anzuzeigen.

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™