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

Beiträge von Micha_he

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 12. Januar 2010 um 22:55

    Hier nun die Version 1.1 des Filebrowser's (Vorstufe zur Verschlüsselungs-Anwendung):

    Änderungen:
    - Trennlinie zwischen TreeView und ListView verschiebbar
    - Verschiebung wird auch beim nächsten Start wieder hergestellt
    - kleinere Bugs beseitigt

    FileBrowser V1.1
    [autoit]

    ; =========================================================
    ; Titel: Filebrowser_TreeListView.au3
    ; Autor: [email='micha_he@autoit.de'][/email]
    ; Ideen & Hilfen: [email='spudw2k@autoitscript.com'][/email]
    ; [email='Oscar@autoit.de'][/email]
    ; Version: 1.1
    ; Datum: 12.01.2010
    ; =========================================================

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>
    #include <ListViewconstants.au3>
    #include <GuiListView.au3>
    #include <GUITreeView.au3>
    #include <File.au3>

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

    Global $arrFileIcons[1]=["shell32.dll"], $sortdir=0
    Global $gaDropFiles[1]
    Global $WM_DROPFILES = 0x233
    Global $IniFile = @ScriptDir & "\FileBrowser.ini"
    Global $MousePos, $TreePos, $ListPos, $Snap = False, $CursorSwitched = False
    Global $IniFile, $WinXPos, $WinYPos, $WinWidth, $WinHeight

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

    $gui = GUICreate("FileBrowser", 780, 348, -1, -1, $WS_SIZEBOX, BitOr($WS_EX_CLIENTEDGE, $WS_EX_ACCEPTFILES))
    $MainGroup = GUICtrlCreateGroup("", 8, 2, 764, 318, $WS_CLIPSIBLINGS)
    GUICtrlSetResizing($MainGroup, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM)
    $treeview = GUICtrlCreateTreeView(16, 18, 250, 290, BitOR($TVS_HASBUTTONS,$TVS_HASLINES,$TVS_LINESATROOT,$TVS_SHOWSELALWAYS,$WS_GROUP,$WS_TABSTOP,$WS_BORDER))
    GUICtrlSetResizing($treeview, $GUI_DOCKAUTO)
    $listview = GUICtrlCreateListView("Name|Type|Size|Modified", 266, 17, 500, 292, BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS,$WS_BORDER))
    GUICtrlSetState($listView, $GUI_DROPACCEPTED)
    GUICtrlSetResizing($listview, $GUI_DOCKAUTO)
    _ColumnResize($listview)
    $hLVContextMenu = GUICtrlCreateContextMenu($listview)
    $hLVNewFolder = GUICtrlCreateMenuItem("Neuer Ordner", $hLVContextMenu)
    $hLVNewFile = GUICtrlCreateMenuItem("Neue Datei", $hLVContextMenu)
    $hLVSelectAll = GUICtrlCreateMenuItem("Alle markieren", $hLVContextMenu)
    $hLVSelectNone = GUICtrlCreateMenuItem("Keine markieren", $hLVContextMenu)
    $hLVItemDelete = GUICtrlCreateMenuItem("Löschen", $hLVContextMenu)

    $tImage = _GUIImageList_Create(16, 16, 5, 2) ;Treeview Icon Image List
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 3) ;Folder
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 4) ;Folder Open
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 181) ;Cdr
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 8) ;Fixed
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 7) ;Removable
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 9) ;Network
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 11) ;CDRom
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 109) ;No Symbol for Burner

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

    _GUICtrlTreeView_SetNormalImageList($treeview, $tImage)

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

    ; Lese verfügbare Laufwerke ein
    ;$drives = DriveGetDrive("FIXED")
    ;If @error Then Exit
    ;For $x = 1 To $drives[0]
    ; $icon=0
    ; If DriveGetType($drives[$x]) = "Fixed" Then $icon=3
    ; If DriveGetType($drives[$x]) = "Removable" Then $icon=4
    ; If DriveGetType($drives[$x]) = "Network" Then $icon=5
    ; If DriveGetType($drives[$x]) = "CDROM" Then $icon=6
    ; If $icon=0 Then
    ; $new = _GUICtrlTreeView_AddChild($treeview,"",$drives[$x],0,1)
    ; Else
    ; $new = _GUICtrlTreeView_AddChild($treeview,"",$drives[$x],$icon,$icon)
    ; EndIf
    ;Next

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

    ; Starte statt mit allen Laufwerken, nur mit einem Verzeichnis
    _GUICtrlTreeView_AddChild($treeview, "", @ProgramFilesDir, 0, 1)
    _GUICtrlTreeView_SelectItem($treeview, 0)
    _FillFolder($treeview)
    _ShowFolder($treeview, $listview, $gui)

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

    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    ; Voreinstellungen versuchen zu laden und Fenster ggf. neu positionieren
    $WinPos = WinGetPos($gui)
    $TrayPos = WinGetPos("[CLASS:Shell_TrayWnd]", "")
    $WinXPos = IniRead($IniFile,"MainGUI","WinXPos","")
    $WinYPos = IniRead($IniFile,"MainGUI","WinYPos","")
    $WinWidth = IniRead($IniFile,"MainGUI","WinWidth","")
    $WinHeight = IniRead($IniFile,"MainGUI","WinHeight","")
    $TreeWidth = IniRead($IniFile,"MainGUI","TreeWidth","")
    If $WinXPos <> "" And $WinYPos <> "" Then
    If $WinXPos < 0 Then $WinXPos = 0
    If $WinYPos < 0 Then $WinYPos = 0
    If $WinWidth < 200 Then $WinWidth = 200
    If $WinHeight < 100 Then $WinHeight = 100
    If $WinWidth > @DESKTOPWIDTH Then $WinWidth = @DESKTOPWIDTH
    If $WinHeight > @DESKTOPHEIGHT Then $WinHeight = @DESKTOPHEIGHT
    If $WinXPos > (@DESKTOPWIDTH - $WinWidth) Then $WinXPos = @DESKTOPWIDTH - $WinWidth
    If $WinYPos > (@DESKTOPHEIGHT - $TrayPos[3] - $WinHeight) Then $WinYPos = @DESKTOPHEIGHT - $TrayPos[3] - $WinHeight
    WinMove($gui,"",$WinXPos,$WinYPos,$WinWidth,$WinHeight)
    GUISetState()
    $TreePos = ControlGetPos($gui, "", $treeview)
    $ListPos = ControlGetPos($gui, "", $listview)
    If $TreeWidth <> "" Then
    If $TreeWidth < 20 Then $TreeWidth = 20
    If $TreeWidth > ($ListPos[0] + $ListPos[2] - 20) Then $TreeWidth = ($ListPos[0] + $ListPos[2] - 20)
    GUICtrlSetPos($treeview, $TreePos[0], $TreePos[1], $TreeWidth)
    GUICtrlSetPos($listview, $TreePos[0] + $TreeWidth, $ListPos[1], $ListPos[2] + $TreePos[2] - $TreeWidth)
    EndIf
    Else
    GUISetState()
    EndIf

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

    $TreePos = ControlGetPos($gui, "", $treeview)
    $ListPos = ControlGetPos($gui, "", $listview)

    While True
    $MousePos = GUIGetCursorInfo($gui)
    ; Cursur für Verschiebung der Trennlinie umschalten
    If ($MousePos[0] >= ($TreePos[0] + $TreePos[2] - 4 ) And $MousePos[0] <= ($ListPos[0] + 4 )) Then
    If MouseGetCursor() = 2 then
    GUISetCursor(13,1)
    $CursorSwitched = True
    EndIf
    Else
    If $CursorSwitched = True Then
    GUISetCursor(2)
    $CursorSwitched = False
    EndIf
    EndIf
    ; Verschieben der Trennlinie zwischen TreeView und ListView
    If $MousePos[2] = True Then ; linke Maustaste gedrückt ?
    If $Snap = False And $CursorSwitched = True Then
    $Snap = True
    EndIf
    If $Snap = True Then
    $NewTreeWidth = $MousePos[0] - $TreePos[0]
    If $NewTreeWidth < 20 Then $NewTreeWidth = 20
    If $NewTreeWidth > ($TreePos[2] + $ListPos[2]) - 20 Then $NewTreeWidth = ($TreePos[2] + $ListPos[2]) - 20
    ControlMove($gui, "", $treeview, $TreePos[0], $TreePos[1], $NewTreeWidth)
    ControlMove($gui, "", $listview, $TreePos[0] + $NewTreeWidth, $ListPos[1], ($TreePos[2] + $ListPos[2]) - $NewTreeWidth)
    $TreePos = ControlGetPos($gui, "", $treeview)
    $ListPos = ControlGetPos($gui, "", $listview)
    EndIf
    Else
    If $Snap = True Then
    $Snap = False
    GUICtrlSetPos($treeview, $TreePos[0], $TreePos[1])
    GUICtrlSetPos($listview, $ListPos[0], $ListPos[1])
    EndIf
    EndIf

    ; Hauptauswahl
    Switch GUIGetMsg()

    Case $GUI_EVENT_CLOSE
    _ExitApp()

    Case $GUI_EVENT_DROPPED
    _AddNewObjects()

    Case $hLVItemDelete
    _DelObjects()

    Case $hLVSelectAll
    _GUICtrlListView_SetItemSelected($Listview, -1, True)

    Case $hLVSelectNone
    _GUICtrlListView_SetItemSelected($Listview, -1, False)

    Case $hLVNewFolder
    _AddNewFolder()

    Case $hLVNewFile
    _AddNewFile()

    EndSwitch
    WEnd

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

    Func _ColumnResize(ByRef $hWnd,$type=0) ;Resize Listview Column routine
    $winpos=WinGetPos($gui)
    _GUICtrlListView_SetColumnWidth($hWnd, 0, $winpos[2]*.2375)
    _GUICtrlListView_SetColumnWidth($hWnd, 1, $winpos[2]*.12)
    _GUICtrlListView_SetColumnWidth($hWnd, 2, $winpos[2]*.1)
    _GUICtrlListView_SetColumnWidth($hWnd, 3, $winpos[2]*.16)
    EndFunc;==> _ColumnResize()

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

    Func _FileGetIcon(ByRef $szIconFile, ByRef $nIcon, $szFile) ;Get Icon for Files - Special Thanks to MrCreator - http://www.autoitscript.com/forum/index.ph...st&p=421467
    Dim $szRegDefault = "", $szDefIcon = ""
    $szExt = StringMid($szFile, StringInStr($szFile, '.', 0, -1))
    If $szExt = '.lnk' Then
    $details = FileGetShortcut($szIconFile)
    $szIconFile = $details[0]
    $szExt = StringMid($details[0], StringInStr($details[0], '.', 0, -1))
    EndIf
    $szRegDefault = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & $szExt, "ProgID")
    If $szRegDefault = "" Then $szRegDefault = RegRead("HKCR\" & $szExt, "")
    If $szRegDefault <> "" Then $szDefIcon = RegRead("HKCR\" & $szRegDefault & "\DefaultIcon", "")
    If $szDefIcon = "" Then $szRegDefault = RegRead("HKCR\" & $szRegDefault & "\CurVer", "")
    If $szRegDefault <> "" Then $szDefIcon = RegRead("HKCR\" & $szRegDefault & "\DefaultIcon", "")
    If $szDefIcon = "" Then
    $szIconFile = "shell32.dll"
    ElseIf $szDefIcon <> "%1" Then
    $arSplit = StringSplit($szDefIcon, ",")
    If IsArray($arSplit) Then
    $szIconFile = $arSplit[1]
    If $arSplit[0] > 1 Then $nIcon = $arSplit[2]
    Else
    Return 0
    EndIf
    EndIf
    Return 1
    EndFunc;==> _FileGetIcon()

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

    Func _FillFolder(ByRef $hWnd) ;Fill Folder in TreeView
    Local $IsExpanded
    $item = _GUICtrlTreeView_GetSelection($hWnd)
    $IsExpanded = _GUICtrlTreeView_GetExpanded($hWnd, $item)
    If _GUICtrlTreeView_GetChildCount($hWnd,$item) > 0 Then _GUICtrlTreeView_DeleteChildren($treeview, $item)
    _GUICtrlTreeView_BeginUpdate($treeview)
    $txt = _TreePath($hWnd,$item)
    _SearchFolder($txt,$item)
    If $IsExpanded Then _GUICtrlTreeView_Expand($hWnd, $item)
    _GUICtrlTreeView_EndUpdate($treeview)
    EndFunc;==> _FillFolder()

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

    Func _FolderFunc($folders,$folder,$parent,$level) ;Add Folder to Source TreeView
    If $parent = 0x00000000 Then Return
    For $i = 1 To UBound($folders)-1
    $parentitem = _GUICtrlTreeView_AddChild($treeview,$parent,$folders[$i],0,1)
    _SearchFolder($folder & "\" & $folders[$i],$parentitem,$level+1)
    Next
    EndFunc;==> _FolderFunc()

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

    Func _FriendlyDate($date) ;Convert Date for Readability
    If Not IsArray($date) Then Return ""
    Local $datetime=""
    For $i = 0 To 5
    $datetime &= $date[$i]
    If $i < 2 Then $datetime &= "-"
    If $i = 2 Then $datetime &= " "
    If $i > 2 And $i < 5 Then $datetime &= ":"
    Next
    Return $datetime
    Endfunc;==> _FriendlyDate()

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

    Func _GetSelectedItems($hWnd,$list,$tree) ;Get list of Selected Items in Source ListView
    $items = _GUICtrlListView_GetSelectedIndices($list,True)
    For $i = 1 To $items[0]
    $items[$i] = _TreePath($tree,_GUICtrlTreeView_GetSelection($tree)) & "\" & _GUICtrlListView_GetItemText(ControlGetHandle($hWnd,"",$list),$items[$i],0)
    Next
    Return $items
    EndFunc;==> _GetSelectedItems()

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

    Func _ReduceMemory($i_PID = -1) ;Reduces Memory Usage -- Special thanks to w0uter and jftuga
    If $i_PID <> -1 Then
    Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
    DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf
    Return $ai_Return[0]
    EndFunc;==> _ReduceMemory()

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

    Func _SearchFolder($folder,$parent,$level=0) ;Recursive Folder Search for Source Treeview/Listview
    If $level >= 1 Then Return
    $folders = _FileListToArray($folder,"*",2)
    _FolderFunc($folders,$folder,$parent,$level)
    EndFunc;==> _SearchFolder()

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

    Func _ShowFolder(ByRef $tree,ByRef $list,ByRef $hWnd,$sort=0) ;Show folder in Source Folder
    Dim $arrCurrentFolder[1][4]
    $item = _GUICtrlTreeView_GetSelection($tree)
    If $item = 0x000000 Then Return 0
    _GUICtrlListView_BeginUpdate($list)
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($list))
    $path = _TreePath($tree,$item)
    For $type = 1 To 2
    Local $Sch
    If $type = 1 Then $Sch = _FileListToArray($path, "*", 2)
    If $type = 2 Then $Sch = _FileListToArray($path, "*", 1)
    If UBound($Sch) > 0 Then
    For $i = 1 To $Sch[0]
    ReDim $arrCurrentFolder[UBound($arrCurrentFolder)+1][4]
    If $type = 1 Then
    $filefolder = "Folder"
    $size = " "
    Else
    $filefolder = StringUpper(StringRight($Sch[$i],StringLen($Sch[$i])-StringInstr($Sch[$i],".",0,-1))) & " File"
    $size = FileGetSize($path & "\" & $Sch[$i])
    EndIf
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][0]=$Sch[$i]
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][1]=$filefolder
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][2]=$size
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][3]=_FriendlyDate(FileGetTime($path & "\" & $Sch[$i]))
    Next
    If $type = 1 And $sort <> 3 Then
    _ArraySort($arrCurrentFolder,$sortdir,0,0,0)
    Else
    _ArraySort($arrCurrentFolder,$sortdir,0,0,$sort)
    EndIf
    If $type = 1 Then
    For $x = 0 To UBound($arrCurrentFolder)-1
    If $arrCurrentFolder[$x][0] Then
    $idx = GUICtrlCreateListViewItem($arrCurrentFolder[$x][0] & "|" & $arrCurrentFolder[$x][1] & "|" & $arrCurrentFolder[$x][2] & "|" & $arrCurrentFolder[$x][3],$list)
    GuiCtrlSetImage(-1, $arrFileIcons[0], -4)
    EndIf
    Next
    $arrCurrentFolder=0
    Dim $arrCurrentFolder[1][4]
    EndIf
    If $type = 2 Then
    For $x = 0 To UBound($arrCurrentFolder)-1
    If $arrCurrentFolder[$x][0] Then
    $idx = GUICtrlCreateListViewItem($arrCurrentFolder[$x][0] & "|" & $arrCurrentFolder[$x][1] & "|" & $arrCurrentFolder[$x][2] & "|" & $arrCurrentFolder[$x][3],$list)
    If StringRight($arrCurrentFolder[$x][0], 4) = ".exe" Then
    $found = _ArraySearch($arrFileIcons,$arrCurrentFolder[$x][0],0,0,0,1)
    If $found <> -1 Then
    GuiCtrlSetImage(-1, $arrFileIcons[$found], 0)
    Else
    If GuiCtrlSetImage(-1, $path & "\" & $arrCurrentFolder[$x][0], 0) = 0 Then
    GuiCtrlSetImage(-1, $arrFileIcons[0], -3)
    Else
    ReDim $arrFileIcons[UBound($arrFileIcons)+1]
    $arrFileIcons[UBound($arrFileIcons)-1]=$path & "\" & $arrCurrentFolder[$x][0]
    GuiCtrlSetImage(-1, $arrFileIcons[UBound($arrFileIcons)-1], 0)
    EndIf
    EndIf
    ElseIf StringRight($arrCurrentFolder[$x][0], 3) = "htm" Or StringRight($arrCurrentFolder[$x][0], 3) = "html" Then
    GuiCtrlSetImage(-1, $arrFileIcons[0], -221)
    Else
    $strExtension=StringTrimLeft($arrCurrentFolder[$x][0],StringInstr($arrCurrentFolder[$x][0],".",0,-1)-1)
    If Not StringInstr($strExtension,".lnk",0,0,0,1) Then
    $found = _ArraySearch($arrFileIcons,$arrCurrentFolder[$x][0],0,0,0,1)
    Else
    $found = _ArraySearch($arrFileIcons,$strExtension,0,0,0,1)
    EndIf
    If $found <> -1 Then
    $icon = StringTrimLeft($arrFileIcons[$found],StringInstr($arrFileIcons[$found],"|",0,-2))
    $icon = StringLeft($icon,StringInstr($icon,"|")-1)
    $nIcon = StringRight($arrFileIcons[$found],StringLen($arrFileIcons[$found])-StringInstr($arrFileIcons[$found],"|",0,-1))
    GuiCtrlSetImage(-1, $icon, $nIcon)
    Else
    Local $szIconFile = $path & "\" & $arrCurrentFolder[$x][0], $nIcon = 0
    _FileGetIcon($szIconFile, $nIcon, $arrCurrentFolder[$x][0])
    If $nIcon <> 0 Then $nIcon = - $nIcon
    ReDim $arrFileIcons[UBound($arrFileIcons)+1]
    $arrFileIcons[UBound($arrFileIcons)-1]=$path & "\" & $arrCurrentFolder[$x][0] & "|" & StringReplace($szIconFile,Chr(34),"") & "|" & StringReplace($nIcon,Chr(34),"")
    GuiCtrlSetImage(-1, $szIconFile , $nIcon)
    EndIf
    EndIf
    EndIf
    Next
    EndIf
    EndIf
    Next
    $Sch=0
    $nIcon=0
    $szIconFile=0
    $arrCurrentFolder=0
    _GUICtrlListView_EndUpdate($list)
    _ReduceMemory()
    EndFunc;==> _ShowFolder()

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

    Func _TreePath($hWnd,$item) ;Determine full path of selected item in TreeView
    $txt = _GUICtrlTreeView_GetText($hWnd,$item)
    Do
    $parent = _GUICtrlTreeView_GetParentHandle($hWnd,$item)
    If $parent <> 0 Then
    $txt = _GUICtrlTreeView_GetText($hWnd,$parent) & "\" & $txt
    $item = $parent
    EndIf
    Until $parent = 0
    Return $txt
    EndFunc;==> _TreePath()

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

    Func _ExitApp()
    Local $WinPos = WinGetPos($gui)
    Local $TreePos = ControlGetPos($gui, "", $treeview)
    ; Fensterposition speichern, wenn nicht minimiert (= -32000)
    If $WinPos[0] <> -32000 Then IniWrite($IniFile,"MainGUI","WinXPos",$WinPos[0])
    If $WinPos[1] <> -32000 Then IniWrite($IniFile,"MainGUI","WinYPos",$WinPos[1])
    If $WinPos[1] <> -32000 Then IniWrite($IniFile,"MainGUI","WinWidth",$WinPos[2])
    If $WinPos[1] <> -32000 Then IniWrite($IniFile,"MainGUI","WinHeight",$WinPos[3])
    If $TreePos[2] >= 20 Then IniWrite($IniFile,"MainGUI","TreeWidth",$TreePos[2])
    Exit
    EndFunc;==> _ExitApp()

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

    Func _AddNewObjects() ; Add new Objects to Treeview/Listview with Drag 'n Drop
    Local $SrcName
    ;_ArrayDisplay($gaDropFiles)
    ;MsgBox(0,"Ziel-Ordner",_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)))
    For $i=0 To UBound($gaDropFiles)-1
    If StringInStr(FileGetAttrib($gaDropFiles[$i]),"D") Then
    If DirCopy($gaDropFiles[$i],_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & StringMid($gaDropFiles[$i],StringInStr($gaDropFiles[$i],"\",0,-1)+1)) = 0 Then
    If Msgbox(52,"Fehler","Der Ordner '$gaDropFiles[$i]' konnte nicht fehlerfrei kopiert werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    Else
    If FileCopy($gaDropFiles[$i],_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & StringMid($gaDropFiles[$i],StringInStr($gaDropFiles[$i],"\",0,-1)+1)) = 0 Then
    If Msgbox(52,"Fehler","Die Datei '$gaDropFiles[$i]' konnte nicht fehlerfrei kopiert werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    EndIf
    Next
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndFunc;==> _AddNewObjects()

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

    Func _DelObjects() ; Delete selected Objects in Listview
    Local $aSelItems
    $aSelItems = _GUICtrlListView_GetSelectedIndices($listview,True)
    If $aSelItems[0] > 0 And Msgbox(52,"Nachfrage","Sollen die markierten Dateien/Ordner wirklich gelöscht werden ?") = 6 Then
    For $i=1 To $aSelItems[0]
    If StringInStr(FileGetAttrib(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i])), "D") Then
    If DirRemove(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i]), 1) = 0 Then
    If Msgbox(52,"Fehler","Der Ordner '" & _TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i]) & "' konnte nicht gelöscht werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    _GUICtrlTreeView_Delete($treeview, _GUICtrlTreeView_FindItem($treeview, _GUICtrlListView_GetItemText($listview,$aSelItems[$i]), False, _GUICtrlTreeView_GetSelection($treeview)))
    Else
    If FileDelete(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i])) = 0 Then
    If Msgbox(52,"Fehler","Die Datei '" & _TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i]) & "' konnte nicht gelöscht werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    EndIf
    Next
    EndIf
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndFunc;==> _DelObjects()

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

    Func _AddNewFolder() ; Add new Folder to Treeview/Listview with Contextmenue
    Local $FolderName
    $FolderName = InputBox("Ordnername ?", " ", "Neuer Ordner")
    If FileExists(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FolderName) Then
    Msgbox(49,"Fehler","Der Ordner '" & $FolderName & "' existiert bereits !")
    Return
    EndIf
    If $FolderName <> "" Then
    If DirCreate(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FolderName) = 0 Then
    Msgbox(49,"Fehler","Der Ordner '" & $FolderName & "' konnte nicht erzeugt werden !")
    Else
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndIf
    EndIf
    EndFunc;==> _AddNewFolder()

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

    Func _AddNewFile() ; Add new File to Listview with Contextmenue
    Local $FileName
    $FileName = InputBox("Dateiname ?", " ", "Neu.txt")
    If FileExists(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FileName) Then
    Msgbox(49,"Fehler","Die Datei '" & $FileName & "' existiert bereits !")
    Return
    EndIf
    If $FileName <> "" Then
    If FileWrite(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FileName, "") = 0 Then
    Msgbox(49,"Fehler","Die Datei '" & $FileName & "' konnte nicht angelegt werden !")
    Else
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndIf
    EndIf
    EndFunc;==> _AddNewFile()

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) ;Notify func
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    $srctree = ControlGetHandle($hwnd,"",$treeview)
    $srclist = ControlGetHandle($hwnd,"",$listview)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    If $iCode = -12 Or $iCode = -17 Then Return False
    Switch $hWndFrom
    Case $srclist
    $item = _GetSelectedItems($gui,$listview,$treeview)
    Switch $iCode
    Case $NM_DBLCLK
    If $item[0]<>0 Then
    $filefolder = _GUICtrlListView_GetSelectedIndices($listview,True)
    If _GUICtrlListView_GetItemText($listview,$filefolder[1],1) = "Folder" Then
    $idx = _GUICtrlTreeView_GetSelection($treeview)
    $item = StringTrimLeft($item[1],stringInstr($item[1],"\",0,-1))
    $found = _GUICtrlTreeView_FindItem($treeview,$item,False,$idx)
    _GUICtrlTreeView_SelectItem($treeview,$found)
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    Else
    ShellExecute($item[1])
    EndIf
    EndIf
    Return TRUE
    EndSwitch
    Case $srctree
    Switch $iCode
    Case $NM_RCLICK
    Local $tPOINT = _WinAPI_GetMousePos(True, $srctree)
    Local $iX = DllStructGetData($tPOINT, "X")
    Local $iY = DllStructGetData($tPOINT, "Y")
    Local $hItem = _GUICtrlTreeView_HitTestItem($srctree, $iX, $iY)
    If $hItem <> 0 Then _GUICtrlTreeView_SelectItem($srctree, $hItem, $TVGN_CARET)
    Case -451
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    Return TRUE
    EndSwitch

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

    Case Else
    Switch $iCode
    Case $NM_CLICK ; The user has clicked the left mouse button within the control
    _SendMessage($gui, $WM_SYSCOMMAND, 0xF012, 2,1)
    EndSwitch
    EndSwitch
    EndFunc;==> WM_NOTIFY

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

    Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
    Local $nSize, $pFileName
    Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
    For $i = 0 To $nAmt[0] - 1
    $nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
    $nSize = $nSize[0] + 1
    $pFileName = DllStructCreate('wchar[' & $nSize & ']')
    DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
    ReDim $gaDropFiles[$i + 1]
    $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
    $pFileName = 0
    Next
    EndFunc ;==>WM_DROPFILES_FUNC

    [/autoit]

    Leider konnte ich die GUIFrame-UDF dafür nicht nutzen, da die Größe der Frames nicht mit dem Parent-Fenster verändert werden. Dies nachzurüsten war mir zu aufwendig. Also verschiebe ich die Position zwischen TreeView und ListView auf herkömmliche Weise.

    Nächste Stufe wird jetzt sein:
    - Rekursives Kopieren von Ordnern (z.Zt. DirCopy()) auf Einzelschritte umstellen. Dies ist notwendig, da die Ordnernamen ja später auch verschlüsselt werden sollen.

  • Suche FileOverTCP funktion

    • Micha_he
    • 12. Januar 2010 um 22:34

    Ich hatte einmal einen Server/Client geschrieben, in dem IrfanView remote gesteuert und anschließend das Bild per TCP übertragen wird. Da funktioniert das einwandfrei. Auch > 4kB.

    Hier die beiden Beispiele: RemoteIVScan V2

  • Active Directory Funktionen - Neue Version 1.5.0.0 freigegeben!

    • Micha_he
    • 12. Januar 2010 um 09:57

    Ich habe auch das eine oder andere Deiner UDF schon getestet. Bisher auch ohne Probleme.

    Nur alle Funktionen (gerade die die Daten verändern) in einer Produktiven Domäne testen, ist mir zu gefährlich. Jedenfalls wenn es nicht wegen einer Aufgabenstellung unbedingt nötig ist.

    Aber bleib ruhig dran. Es kommt bestimmt der Zeitpunkt wo ich auch mal wieder auf die ADFunctions-UDF zurückgreifen würde.

    Gruß
    micha_he

  • Variable zu Array...

    • Micha_he
    • 11. Januar 2010 um 17:15
    [autoit]

    $array=StringSplit($var,"")

    [/autoit]

    Edit: Mist, zu spät...

  • SkinCrafter - Demo -Tutorial!

    • Micha_he
    • 10. Januar 2010 um 12:12

    Ich finde es auch gut.... ab in die Sammlung.

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 10. Januar 2010 um 01:38

    TrueCrypt benötigt entweder eine vorherige Installationm oder Admin-Rechte auf dem Rechner. Letzteres betrifft leider auch die Portable-Edition.

    Wie sollte auch ein Nicht-Admin mittels eines Treibers, neue Laufwerke aus Images mounten ?

    Habe ich alles durchprobiert.

    Den zweiten Teil Deines Hinweises lasse ich mir nochmal durch den Kopf gehen. Da ist zum Teil etwas dran.

  • Neues GUI in Funktion

    • Micha_he
    • 9. Januar 2010 um 18:19

    Dann erzeugst Du am Ende deines Scripts eine Funktion, in der Du z.B. das ListView-Object im 2. GUI aktualisierst und es anschließend mit GUISetState anzeigst.

    Diese Funktion kannst Du nun an der passenden Stelle im Script aufrufen.

  • Neues GUI in Funktion

    • Micha_he
    • 9. Januar 2010 um 17:23

    So z.B.:

    Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3> ; ich weis, die ganzen includes braucht man nicht
    #include <GuiListView.au3> ;
    #include <IE.au3>
    Global $hWindow, $wiWindow, $but, $closewibut
    $DesktopWidth=@DesktopWidth-100
    $DesktopHeight=@DesktopHeight-130
    $DesktopPosLeft=(@DesktopWidth-$DesktopWidth)/2
    $DesktopPosTop=(@DesktopHeight-$DesktopHeight)/2
    $hWindow = GUICreate("Fenster 1", $DesktopWidth,$DesktopHeight,$DesktopPosLeft, $DesktopPosTop)
    $but = GUICtrlCreateButton("Fenster 2 öffnen", 500, 500, 300, 50) ; Button erzeugen
    $wiWindow = GUICreate("Fenster 2", $DesktopWidth,$DesktopHeight,$DesktopPosLeft, $DesktopPosTop)
    $closewibut = GUICtrlCreateButton("Fenster 2 schließen", 500, 500, 300, 50) ; Button erzeugen
    GUISetState(@SW_SHOW, $hWindow)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $but
    GUISetState(@SW_SHOW,$wiWindow)
    Case $closewibut
    GUISetState(@SW_HIDE,$wiWindow)
    EndSwitch
    WEnd

    [/autoit]
  • Neues GUI in Funktion

    • Micha_he
    • 9. Januar 2010 um 17:14
    Zitat von name22

    @Micha he
    Die Variable kann in einer Funktion nicht Global deklariert werden, denke ich :D
    Oder hab ich da was falsch verstanden ?(

    name22: Ja

  • Neues GUI in Funktion

    • Micha_he
    • 9. Januar 2010 um 17:13

    Du fragst in Zeile 28 mit "Case $wiWindow" eine Variable ab, bevor sie in der Funktion deklariert wurde.

    Geh einfach folgendermaßen vor:
    Erzeuge beide GUI's am Anfang (mit globalen Handle-Variablen) und schalte dann mittels deines Button's
    das jeweilige GUI sichtbar/unsichtbar (GUISetState).

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 9. Januar 2010 um 17:04

    Habe ich mir gerade angesehen. Sieht vielversprechend aus.

    Werde demnächst mal schauen, ob es umsetzbar ist.

  • Neues GUI in Funktion

    • Micha_he
    • 9. Januar 2010 um 16:54
    [autoit]

    Func Funktion()
    Global $wiWindow
    $wiWindow = GUICreate("Fenster 2", $DesktopWidth,$DesktopHeight,$DesktopPosLeft, $DesktopPosTop)
    $closewibut = GUICtrlCreateButton("Fenster 2 schließen", 500, 500, 300, 50) ; Button erzeugen
    GUISetState(@SW_SHOW)

    [/autoit]

    Standard-Deklaration in Funktionen ist LOCAL. Also außerhalb der Funktion nicht mehr verfügbar.
    Wenn Du also ausßerhalb einer Funktion darauf zugreifen willst, muss Du sie als GLOBAL deklarieren.

  • Nach jeden 4. Zeichen ein "-" setzen

    • Micha_he
    • 9. Januar 2010 um 16:19

    Nein, Ich meinte der "Weiter"-Button ist bei mir nicht anwählbar.

    Edit: Ich sehe gerade, der "SetState" für den Button ist gar nicht umgesetzt.

  • Nach jeden 4. Zeichen ein "-" setzen

    • Micha_he
    • 9. Januar 2010 um 15:59

    Bei mir geht in Deiner letzten Version folgendes nicht:

    - "weiter" nach Eingabe von 16 Zeichen
    - Backspace nur um die letzten 4 Zeichen

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 9. Januar 2010 um 15:52

    Der ZAP-Packer von Oscar war ja schon nicht schlecht, aber leider nur minimal für meinen Fall zu gebrauchen.

    Im englischen Forum habe ich dann ein einigermaßen passendes Beispiel für eine GUI gefunden und an meine Bedürfnisse angepasst, bzw mit den notwendigen Funktionen erweitert.

    Herausgekommen ist folgendes Script, welches im Prinzip ein offenes Explorerfenster simuliert. Kopieren von Dateien und Ordnern per Drap 'n Drop, Anlegen von Dateien und Ordnern per Kontextmenü, Löschen von einem oder mehreren Ordner und Dateien. Also im Prinzip nichts anderes, als das was ein Explorer auch könnte. Aber nun kann ich in diese Oberfläche die Verschlüsselung der Namen und Daten einbauen.

    Was ich an der Oberfläche noch ändern möchte, ist das ich die Trennposition zwischen TreeView und ListView verschieben und für den nächsten Programmstart speichern kann. Nur habe ich dazu im Moment keine Idee.

    Hier der FileBrowser:

    FileBrowser_TreeListView.au3
    [autoit]

    ; =========================================================
    ; Titel: Filebrowser_TreeListView.au3
    ; Autor: [email='micha_he@autoit.de'][/email]
    ; Ideen & Hilfen: [email='spudw2k@autoitscript.com'][/email]
    ; [email='Oscar@autoit.de'][/email]
    ; Version: 1.0
    ; Datum: 09.01.2010
    ; =========================================================

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>
    #include <ListViewconstants.au3>
    #include <GuiListView.au3>
    #include <GUITreeView.au3>
    #include <File.au3>
    #include <Array.au3>

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

    Global $arrFileIcons[1]=["shell32.dll"], $sortdir=0
    Global $gaDropFiles[1]
    Global $WM_DROPFILES = 0x233

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

    $gui = GUICreate("FileBrowser", 780, 348, -1, -1, $WS_SIZEBOX, BitOr($WS_EX_CLIENTEDGE, $WS_EX_ACCEPTFILES))
    $MainGroup = GUICtrlCreateGroup("", 8, 0, 764, 320, $WS_CLIPSIBLINGS)
    GUICtrlSetResizing($MainGroup, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM)
    $treeview = GUICtrlCreateTreeView(16, 20, 250, 290, BitOR($TVS_HASBUTTONS,$TVS_HASLINES,$TVS_LINESATROOT,$TVS_SHOWSELALWAYS,$WS_GROUP,$WS_TABSTOP,$WS_BORDER))
    GUICtrlSetResizing($treeview, $GUI_DOCKAUTO)
    $listview = GUICtrlCreateListView("Name|Type|Size|Modified", 266, 19, 500, 292, BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS,$WS_BORDER))
    GUICtrlSetState($listView, $GUI_DROPACCEPTED)
    GUICtrlSetResizing($listview, $GUI_DOCKAUTO)
    _ColumnResize($listview)
    $hLVContextMenu = GUICtrlCreateContextMenu($listview)
    $hLVNewFolder = GUICtrlCreateMenuItem("Neuer Ordner", $hLVContextMenu)
    $hLVNewFile = GUICtrlCreateMenuItem("Neue Datei", $hLVContextMenu)
    $hLVSelectAll = GUICtrlCreateMenuItem("Alle markieren", $hLVContextMenu)
    $hLVSelectNone = GUICtrlCreateMenuItem("Keine markieren", $hLVContextMenu)
    $hLVItemDelete = GUICtrlCreateMenuItem("Löschen", $hLVContextMenu)

    $tImage = _GUIImageList_Create(16, 16, 5, 2) ;Treeview Icon Image List
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 3) ;Folder
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 4) ;Folder Open
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 181) ;Cdr
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 8) ;Fixed
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 7) ;Removable
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 9) ;Network
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 11) ;CDRom
    _GUIImageList_AddIcon($tImage, @SystemDir & "\shell32.dll", 109) ;No Symbol for Burner

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

    _GUICtrlTreeView_SetNormalImageList($treeview, $tImage)

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

    ; *** Lese verfügbare Laufwerke ein ***
    ;$drives = DriveGetDrive("FIXED")
    ;If @error Then Exit
    ;For $x = 1 To $drives[0]
    ; $icon=0
    ; If DriveGetType($drives[$x]) = "Fixed" Then $icon=3
    ; If DriveGetType($drives[$x]) = "Removable" Then $icon=4
    ; If DriveGetType($drives[$x]) = "Network" Then $icon=5
    ; If DriveGetType($drives[$x]) = "CDROM" Then $icon=6
    ; If $icon=0 Then
    ; $new = _GUICtrlTreeView_AddChild($treeview,"",$drives[$x],0,1)
    ; Else
    ; $new = _GUICtrlTreeView_AddChild($treeview,"",$drives[$x],$icon,$icon)
    ; EndIf
    ;Next

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

    ; *** Starte statt mit allen Laufwerken, nur mit Unterverzeichnis 'Vault' ***
    _GUICtrlTreeView_AddChild($treeview, "", @ProgramFilesDir, 0, 1)
    _GUICtrlTreeView_SelectItem($treeview, 0)
    _FillFolder($treeview)
    _ShowFolder($treeview, $listview, $gui)

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

    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    ; Voreinstellungen versuchen zu laden
    Global $IniFile, $WinXPos, $WinYPos, $WinWidth, $WinHigh
    $IniFile = @ScriptDir & "\FileBrowser.ini"
    If FileExists($IniFile) Then
    $WinPos = WinGetPos($gui)
    $TrayPos = WinGetPos("[CLASS:Shell_TrayWnd]", "")
    $WinXPos = IniRead($IniFile,"MainGUI","WinXPos","")
    $WinYPos = IniRead($IniFile,"MainGUI","WinYPos","")
    $WinWidth = IniRead($IniFile,"MainGUI","WinWidth",$WinPos[2])
    $WinHigh = IniRead($IniFile,"MainGUI","WinHigh",$WinPos[3])
    If $WinXPos <> "" And $WinYPos <> "" Then
    If $WinXPos < 0 Then $WinXPos = 0
    If $WinYPos < 0 Then $WinYPos = 0
    If $WinXPos > (@DESKTOPWIDTH - $WinWidth) Then $WinXPos = @DESKTOPWIDTH - $WinWidth
    If $WinYPos > (@DESKTOPHEIGHT - $TrayPos[3] - $WinHigh) Then $WinYPos = @DESKTOPHEIGHT - $TrayPos[3] - $WinHigh
    WinMove($gui,"",$WinXPos,$WinYPos,$WinWidth,$WinHigh)
    EndIf
    EndIf

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

    GUISetState()

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

    While True
    Switch GUIGetMsg()

    Case $GUI_EVENT_CLOSE
    _ExitApp()

    Case $GUI_EVENT_DROPPED
    _AddNewObjects()

    Case $hLVItemDelete
    _DelObjects()

    Case $hLVSelectAll
    _GUICtrlListView_SetItemSelected($Listview, -1, True)

    Case $hLVSelectNone
    _GUICtrlListView_SetItemSelected($Listview, -1, False)

    Case $hLVNewFolder
    _AddNewFolder()

    Case $hLVNewFile
    _AddNewFile()

    EndSwitch
    WEnd

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

    Func _ColumnResize(ByRef $hWnd,$type=0) ;Resize Listview Column routine
    $winpos=WinGetPos($gui)
    _GUICtrlListView_SetColumnWidth($hWnd, 0, $winpos[2]*.2375)
    _GUICtrlListView_SetColumnWidth($hWnd, 1, $winpos[2]*.12)
    _GUICtrlListView_SetColumnWidth($hWnd, 2, $winpos[2]*.1)
    _GUICtrlListView_SetColumnWidth($hWnd, 3, $winpos[2]*.16)
    EndFunc;==> _ColumnResize()

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

    Func _FileGetIcon(ByRef $szIconFile, ByRef $nIcon, $szFile) ;Get Icon for Files - Special Thanks to MrCreator - http://www.autoitscript.com/forum/index.ph...st&p=421467
    Dim $szRegDefault = "", $szDefIcon = ""
    $szExt = StringMid($szFile, StringInStr($szFile, '.', 0, -1))
    If $szExt = '.lnk' Then
    $details = FileGetShortcut($szIconFile)
    $szIconFile = $details[0]
    $szExt = StringMid($details[0], StringInStr($details[0], '.', 0, -1))
    EndIf
    $szRegDefault = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & $szExt, "ProgID")
    If $szRegDefault = "" Then $szRegDefault = RegRead("HKCR\" & $szExt, "")
    If $szRegDefault <> "" Then $szDefIcon = RegRead("HKCR\" & $szRegDefault & "\DefaultIcon", "")
    If $szDefIcon = "" Then $szRegDefault = RegRead("HKCR\" & $szRegDefault & "\CurVer", "")
    If $szRegDefault <> "" Then $szDefIcon = RegRead("HKCR\" & $szRegDefault & "\DefaultIcon", "")
    If $szDefIcon = "" Then
    $szIconFile = "shell32.dll"
    ElseIf $szDefIcon <> "%1" Then
    $arSplit = StringSplit($szDefIcon, ",")
    If IsArray($arSplit) Then
    $szIconFile = $arSplit[1]
    If $arSplit[0] > 1 Then $nIcon = $arSplit[2]
    Else
    Return 0
    EndIf
    EndIf
    Return 1
    EndFunc;==> _FileGetIcon()

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

    Func _FillFolder(ByRef $hWnd) ;Fill Folder in TreeView
    Local $IsExpanded
    $item = _GUICtrlTreeView_GetSelection($hWnd)
    $IsExpanded = _GUICtrlTreeView_GetExpanded($hWnd, $item)
    If _GUICtrlTreeView_GetChildCount($hWnd,$item) > 0 Then _GUICtrlTreeView_DeleteChildren($treeview, $item)
    _GUICtrlTreeView_BeginUpdate($treeview)
    $txt = _TreePath($hWnd,$item)
    _SearchFolder($txt,$item)
    If $IsExpanded Then _GUICtrlTreeView_Expand($hWnd, $item)
    _GUICtrlTreeView_EndUpdate($treeview)
    EndFunc;==> _FillFolder()

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

    Func _FolderFunc($folders,$folder,$parent,$level) ;Add Folder to Source TreeView
    If $parent = 0x00000000 Then Return
    For $i = 1 To UBound($folders)-1
    $parentitem = _GUICtrlTreeView_AddChild($treeview,$parent,$folders[$i],0,1)
    _SearchFolder($folder & "\" & $folders[$i],$parentitem,$level+1)
    Next
    EndFunc;==> _FolderFunc()

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

    Func _FriendlyDate($date) ;Convert Date for Readability
    If Not IsArray($date) Then Return ""
    Local $datetime=""
    For $i = 0 To 5
    $datetime &= $date[$i]
    If $i < 2 Then $datetime &= "-"
    If $i = 2 Then $datetime &= " "
    If $i > 2 And $i < 5 Then $datetime &= ":"
    Next
    Return $datetime
    Endfunc;==> _FriendlyDate()

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

    Func _GetSelectedItems($hWnd,$list,$tree) ;Get list of Selected Items in Source ListView
    $items = _GUICtrlListView_GetSelectedIndices($list,True)
    For $i = 1 To $items[0]
    $items[$i] = _TreePath($tree,_GUICtrlTreeView_GetSelection($tree)) & "\" & _GUICtrlListView_GetItemText(ControlGetHandle($hWnd,"",$list),$items[$i],0)
    Next
    Return $items
    EndFunc;==> _GetSelectedItems()

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

    Func _ReduceMemory($i_PID = -1) ;Reduces Memory Usage -- Special thanks to w0uter and jftuga
    If $i_PID <> -1 Then
    Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
    DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf
    Return $ai_Return[0]
    EndFunc;==> _ReduceMemory()

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

    Func _SearchFolder($folder,$parent,$level=0) ;Recursive Folder Search for Source Treeview/Listview
    If $level >= 1 Then Return
    $folders = _FileListToArray($folder,"*",2)
    _FolderFunc($folders,$folder,$parent,$level)
    EndFunc;==> _SearchFolder()

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

    Func _ShowFolder(ByRef $tree,ByRef $list,ByRef $hWnd,$sort=0) ;Show folder in Source Folder
    Dim $arrCurrentFolder[1][4]
    $item = _GUICtrlTreeView_GetSelection($tree)
    If $item = 0x000000 Then Return 0
    _GUICtrlListView_BeginUpdate($list)
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($list))
    $path = _TreePath($tree,$item)
    For $type = 1 To 2
    Local $Sch
    If $type = 1 Then $Sch = _FileListToArray($path, "*", 2)
    If $type = 2 Then $Sch = _FileListToArray($path, "*", 1)
    If UBound($Sch) > 0 Then
    For $i = 1 To $Sch[0]
    ReDim $arrCurrentFolder[UBound($arrCurrentFolder)+1][4]
    If $type = 1 Then
    $filefolder = "Folder"
    $size = " "
    Else
    $filefolder = StringUpper(StringRight($Sch[$i],StringLen($Sch[$i])-StringInstr($Sch[$i],".",0,-1))) & " File"
    $size = FileGetSize($path & "\" & $Sch[$i])
    EndIf
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][0]=$Sch[$i]
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][1]=$filefolder
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][2]=$size
    $arrCurrentFolder[UBound($arrCurrentFolder)-1][3]=_FriendlyDate(FileGetTime($path & "\" & $Sch[$i]))
    Next
    If $type = 1 And $sort <> 3 Then
    _ArraySort($arrCurrentFolder,$sortdir,0,0,0)
    Else
    _ArraySort($arrCurrentFolder,$sortdir,0,0,$sort)
    EndIf
    If $type = 1 Then
    For $x = 0 To UBound($arrCurrentFolder)-1
    If $arrCurrentFolder[$x][0] Then
    $idx = GUICtrlCreateListViewItem($arrCurrentFolder[$x][0] & "|" & $arrCurrentFolder[$x][1] & "|" & $arrCurrentFolder[$x][2] & "|" & $arrCurrentFolder[$x][3],$list)
    GuiCtrlSetImage(-1, $arrFileIcons[0], -4)
    EndIf
    Next
    $arrCurrentFolder=0
    Dim $arrCurrentFolder[1][4]
    EndIf
    If $type = 2 Then
    For $x = 0 To UBound($arrCurrentFolder)-1
    If $arrCurrentFolder[$x][0] Then
    $idx = GUICtrlCreateListViewItem($arrCurrentFolder[$x][0] & "|" & $arrCurrentFolder[$x][1] & "|" & $arrCurrentFolder[$x][2] & "|" & $arrCurrentFolder[$x][3],$list)
    If StringRight($arrCurrentFolder[$x][0], 4) = ".exe" Then
    $found = _ArraySearch($arrFileIcons,$arrCurrentFolder[$x][0],0,0,0,1)
    If $found <> -1 Then
    GuiCtrlSetImage(-1, $arrFileIcons[$found], 0)
    Else
    If GuiCtrlSetImage(-1, $path & "\" & $arrCurrentFolder[$x][0], 0) = 0 Then
    GuiCtrlSetImage(-1, $arrFileIcons[0], -3)
    Else
    ReDim $arrFileIcons[UBound($arrFileIcons)+1]
    $arrFileIcons[UBound($arrFileIcons)-1]=$path & "\" & $arrCurrentFolder[$x][0]
    GuiCtrlSetImage(-1, $arrFileIcons[UBound($arrFileIcons)-1], 0)
    EndIf
    EndIf
    ElseIf StringRight($arrCurrentFolder[$x][0], 3) = "htm" Or StringRight($arrCurrentFolder[$x][0], 3) = "html" Then
    GuiCtrlSetImage(-1, $arrFileIcons[0], -221)
    Else
    $strExtension=StringTrimLeft($arrCurrentFolder[$x][0],StringInstr($arrCurrentFolder[$x][0],".",0,-1)-1)
    If Not StringInstr($strExtension,".lnk",0,0,0,1) Then
    $found = _ArraySearch($arrFileIcons,$arrCurrentFolder[$x][0],0,0,0,1)
    Else
    $found = _ArraySearch($arrFileIcons,$strExtension,0,0,0,1)
    EndIf
    If $found <> -1 Then
    $icon = StringTrimLeft($arrFileIcons[$found],StringInstr($arrFileIcons[$found],"|",0,-2))
    $icon = StringLeft($icon,StringInstr($icon,"|")-1)
    $nIcon = StringRight($arrFileIcons[$found],StringLen($arrFileIcons[$found])-StringInstr($arrFileIcons[$found],"|",0,-1))
    GuiCtrlSetImage(-1, $icon, $nIcon)
    Else
    Local $szIconFile = $path & "\" & $arrCurrentFolder[$x][0], $nIcon = 0
    _FileGetIcon($szIconFile, $nIcon, $arrCurrentFolder[$x][0])
    If $nIcon <> 0 Then $nIcon = - $nIcon
    ReDim $arrFileIcons[UBound($arrFileIcons)+1]
    $arrFileIcons[UBound($arrFileIcons)-1]=$path & "\" & $arrCurrentFolder[$x][0] & "|" & StringReplace($szIconFile,Chr(34),"") & "|" & StringReplace($nIcon,Chr(34),"")
    GuiCtrlSetImage(-1, $szIconFile , $nIcon)
    EndIf
    EndIf
    EndIf
    Next
    EndIf
    EndIf
    Next
    $Sch=0
    $nIcon=0
    $szIconFile=0
    $arrCurrentFolder=0
    _GUICtrlListView_EndUpdate($list)
    _ReduceMemory()
    EndFunc;==> _ShowFolder()

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

    Func _TreePath($hWnd,$item) ;Determine full path of selected item in TreeView
    $txt = _GUICtrlTreeView_GetText($hWnd,$item)
    Do
    $parent = _GUICtrlTreeView_GetParentHandle($hWnd,$item)
    If $parent <> 0 Then
    $txt = _GUICtrlTreeView_GetText($hWnd,$parent) & "\" & $txt
    $item = $parent
    EndIf
    Until $parent = 0
    Return $txt
    EndFunc;==> _TreePath()

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

    Func _ExitApp()
    Local $WinPos = WinGetPos($gui)
    ; Fensterposition speichern, wenn nicht minimiert (= -32000)
    If $WinPos[0] <> -32000 Then IniWrite($IniFile,"MainGUI","WinXPos",$WinPos[0])
    If $WinPos[1] <> -32000 Then IniWrite($IniFile,"MainGUI","WinYPos",$WinPos[1])
    If $WinPos[1] <> -32000 Then IniWrite($IniFile,"MainGUI","WinWidth",$WinPos[2])
    If $WinPos[1] <> -32000 Then IniWrite($IniFile,"MainGUI","WinHigh",$WinPos[3])
    Exit
    EndFunc;==> _ExitApp()

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

    Func _AddNewObjects() ; Add new Objects to Treeview/Listview with Drag 'n Drop
    Local $SrcName
    ;_ArrayDisplay($gaDropFiles)
    ;MsgBox(0,"Ziel-Ordner",_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)))
    For $i=0 To UBound($gaDropFiles)-1
    If StringInStr(FileGetAttrib($gaDropFiles[$i]),"D") Then
    If DirCopy($gaDropFiles[$i],_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & StringMid($gaDropFiles[$i],StringInStr($gaDropFiles[$i],"\",0,-1)+1)) = 0 Then
    If Msgbox(52,"Fehler","Der Ordner '$gaDropFiles[$i]' konnte nicht fehlerfrei kopiert werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    Else
    If FileCopy($gaDropFiles[$i],_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & StringMid($gaDropFiles[$i],StringInStr($gaDropFiles[$i],"\",0,-1)+1)) = 0 Then
    If Msgbox(52,"Fehler","Die Datei '$gaDropFiles[$i]' konnte nicht fehlerfrei kopiert werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    EndIf
    Next
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndFunc;==> _AddNewObjects()

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

    Func _DelObjects() ; Delete selected Objects in Listview
    Local $aSelItems
    $aSelItems = _GUICtrlListView_GetSelectedIndices($listview,True)
    If $aSelItems[0] > 0 And Msgbox(52,"Nachfrage","Sollen die markierten Dateien/Ordner wirklich gelöscht werden ?") = 6 Then
    For $i=1 To $aSelItems[0]
    If StringInStr(FileGetAttrib(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i])), "D") Then
    If DirRemove(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i]), 1) = 0 Then
    If Msgbox(52,"Fehler","Der Ordner '" & _TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i]) & "' konnte nicht gelöscht werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    _GUICtrlTreeView_Delete($treeview, _GUICtrlTreeView_FindItem($treeview, _GUICtrlListView_GetItemText($listview,$aSelItems[$i]), False, _GUICtrlTreeView_GetSelection($treeview)))
    Else
    If FileDelete(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i])) = 0 Then
    If Msgbox(52,"Fehler","Die Datei '" & _TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & _GUICtrlListView_GetItemText($listview,$aSelItems[$i]) & "' konnte nicht gelöscht werden. Fortfahren ?") = 7 Then ExitLoop
    EndIf
    EndIf
    Next
    EndIf
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndFunc;==> _DelObjects()

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

    Func _AddNewFolder() ; Add new Folder to Treeview/Listview with Contextmenue
    Local $FolderName
    $FolderName = InputBox("Ordnername ?", " ", "Neuer Ordner")
    If FileExists(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FolderName) Then
    Msgbox(49,"Fehler","Der Ordner '" & $FolderName & "' existiert bereits !")
    Return
    EndIf
    If $FolderName <> "" Then
    If DirCreate(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FolderName) = 0 Then
    Msgbox(49,"Fehler","Der Ordner '" & $FolderName & "' konnte nicht erzeugt werden !")
    Else
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndIf
    EndIf
    EndFunc;==> _AddNewFolder()

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

    Func _AddNewFile() ; Add new File to Listview with Contextmenue
    Local $FileName
    $FileName = InputBox("Dateiname ?", " ", "Neu.txt")
    If FileExists(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FileName) Then
    Msgbox(49,"Fehler","Die Datei '" & $FileName & "' existiert bereits !")
    Return
    EndIf
    If $FileName <> "" Then
    If FileWrite(_TreePath($treeview,_GUICtrlTreeView_GetSelection($treeview)) & "\" & $FileName, "") = 0 Then
    Msgbox(49,"Fehler","Die Datei '" & $FileName & "' konnte nicht angelegt werden !")
    Else
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    EndIf
    EndIf
    EndFunc;==> _AddNewFile()

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) ;Notify func
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    $srctree = ControlGetHandle($hwnd,"",$treeview)
    $srclist = ControlGetHandle($hwnd,"",$listview)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    If $iCode = -12 Or $iCode = -17 Then Return False
    Switch $hWndFrom
    Case $srclist
    $item = _GetSelectedItems($gui,$listview,$treeview)
    Switch $iCode
    Case $NM_DBLCLK
    If $item[0]<>0 Then
    $filefolder = _GUICtrlListView_GetSelectedIndices($listview,True)
    If _GUICtrlListView_GetItemText($listview,$filefolder[1],1) = "Folder" Then
    $idx = _GUICtrlTreeView_GetSelection($treeview)
    $item = StringTrimLeft($item[1],stringInstr($item[1],"\",0,-1))
    $found = _GUICtrlTreeView_FindItem($treeview,$item,False,$idx)
    _GUICtrlTreeView_SelectItem($treeview,$found)
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    Else
    ShellExecute($item[1])
    ;Run(@Comspec & " /c " & chr(34) & $item[1] & chr(34),"",@SW_HIDE)
    ;sleep(1500)
    EndIf
    EndIf
    Return TRUE
    EndSwitch
    Case $srctree
    Switch $iCode
    Case $NM_RCLICK
    Local $tPOINT = _WinAPI_GetMousePos(True, $srctree)
    Local $iX = DllStructGetData($tPOINT, "X")
    Local $iY = DllStructGetData($tPOINT, "Y")
    Local $hItem = _GUICtrlTreeView_HitTestItem($srctree, $iX, $iY)
    If $hItem <> 0 Then _GUICtrlTreeView_SelectItem($srctree, $hItem, $TVGN_CARET)
    Case -451
    _FillFolder($treeview)
    _ShowFolder($treeview,$listview,$gui)
    Return TRUE
    EndSwitch

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

    Case Else
    Switch $iCode
    Case $NM_CLICK ; The user has clicked the left mouse button within the control
    _SendMessage($gui, $WM_SYSCOMMAND, 0xF012, 2,1)
    EndSwitch
    EndSwitch
    EndFunc;==> WM_NOTIFY

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

    Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
    Local $nSize, $pFileName
    Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
    For $i = 0 To $nAmt[0] - 1
    $nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
    $nSize = $nSize[0] + 1
    $pFileName = DllStructCreate('wchar[' & $nSize & ']')
    DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
    ReDim $gaDropFiles[$i + 1]
    $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
    $pFileName = 0
    Next
    EndFunc ;==>WM_DROPFILES_FUNC

    [/autoit]

    Falls jemand noch Fehler oder was zu verbessern findet, immer ran. Kann natürlich jeder in seinen Scripten weiterverwenden.

  • scriptpfad bestimmen

    • Micha_he
    • 9. Januar 2010 um 12:03
    Zitat von JuraX

    FileInstall("C:\Users\Public\Desktop\INRadio Entwicklungs-umgebung\anb.ico",$pfad'\')

    Zeile 4 muss heißen:

    [autoit]

    FileInstall("C:\Users\Public\Desktop\INRadio Entwicklungs-umgebung\anb.ico",$pfad & '\')

    [/autoit]
  • SplashTextOn - Fenster automatisch an Schriftgröße anpassen

    • Micha_he
    • 8. Januar 2010 um 18:18

    Ich habe daraus mal ein Beispiel geschrieben, weil ich testen wollte, ob man die Funktion brauchen kann.

    Beispiel zu _GetTextSize
    [autoit]

    #Include <GDIPlus.au3>

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

    $sText = "Splash-Demo-Text"
    $aTextSize = _GetTextSize($sText,36,'Times New Roman')
    SplashTextOn("", $sText, $aTextSize[0] + 6, $aTextSize[1] + 20, -1, -1, -1, "Times New Roman", 36)
    Sleep(5000)
    SplashOff()

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

    Func _GetTextSize($nText, $iFontSize = 8.5, $sFont = 'Microsoft Sans Serif', $iFontAttributes = 0)
    ;Author: Bugfix
    ;Modified: funkey
    Local $DUMMY
    If $nText = '' Then Return
    $hOld = GUISwitch($DUMMY)
    Local $hGUI = GUICreate("Textmeter by Bugfix")
    _GDIPlus_Startup()
    Local $hFormat = _GDIPlus_StringFormatCreate(0)
    Local $hFamily = _GDIPlus_FontFamilyCreate($sFont)
    Local $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize, $iFontAttributes, 3)
    Local $tLayout = _GDIPlus_RectFCreate(15, 171, 0, 0)
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $nText, $hFont, $tLayout, $hFormat)
    Local $iWidth = Ceiling(DllStructGetData($aInfo[0], "Width"))
    Local $iHeight = Ceiling(DllStructGetData($aInfo[0], "Height"))
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    GUIDelete($hGUI)
    Local $aSize[2] = [$iWidth, $iHeight]
    GUISwitch($hOld)
    Return $aSize
    EndFunc ;==>_GetTextSize

    [/autoit]
  • Schleifen zeitlich begrenzt laufen lassen

    • Micha_he
    • 7. Januar 2010 um 21:41
    Zitat von Sprenger120

    sowas


    [autoit]


    $TimeExit = 2000
    $timer = TimerInit()
    While 1
    Stuff()
    if TimerDiff($timer) >= $TimeExit Then ExitLoop
    WEnd

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

    func Stuff()
    Sleep(20)
    EndFunc

    [/autoit]
    Alles anzeigen

    Was ist das für ein Programmstil ?

    Spoiler anzeigen
    [autoit]

    $TimeExit = 2000
    $timer = TimerInit()

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

    While TimerDiff($timer) < $TimeExit
    Stuff()
    WEnd

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

    Func Stuff()
    Sleep(20)
    EndFunc

    [/autoit]
  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 7. Januar 2010 um 16:05

    Ich schau mir Dein "Packer" mal an. Vielleicht ist das ja schon einmal ein erster größerer Schritt.

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 7. Januar 2010 um 10:58

    Ich suchte einmal ein Tool mit folgenden Randbedingungen:

    - lauffähig ohne Installation und Adminrechten
    - also auch direkt vom USB-Stick
    - es soll dazu dienen, Dateien aufzunehmen und zu verschlüsseln,
    am besten auch den Dateinamen
    - dieses am besten per 'Drag And Drop'
    - nur einmal nach einem Passwort fragen
    - keine unnötigen unverschlüsselten Dateien auf die lokale Platte
    schreiben
    - möglicht AES256 unterstützen
    - Dateien per Doppelklick entschlüsseln und mit der verknüpften
    Anwendung öffnen

    Hört sich doch schonmal gut an, oder ?

    Selber in AutoIt schreiben scheiterte damals (ich hatte im Hilfe-Forum schonmal bei euch nachgefragt) schon daran, Dateien per 'Drag And Drop' in ein TreeView/Listview zu bekommen und möglichst auch wieder zurück in den Windows-Explorer. Hat mittlerweile jemand eine Idee oder ein Beispiel ???

    Nach langer Suche habe ich folgendes Freeware-Tool gefunden: PaDELCrypt
    Schaut es euch ruhig einfach mal an....

    Das Teil sieht wirklich brauchbar aus, nur beim Doppelklick auf eine Datei, öffnet sich nicht unbedingt das zugehörige Programm was der User ausgewählt hat, sondern das welches laut System/Admin vorgegeben wurde. Java halt ?( Außerdem wird entweder ein lokal installiertes Java benötigt, oder man muss die ganze Java-Installation auf dem USB-Stick mitbringen, was den Umfang des Tools ganz schön aufbläht.

    Hat jemand eine Idee wie ich die Oberfläche samt 'Drag And Drop' (IN/OUT) in AutoIt nachgebaut bekomme ?

    Besten Dank für eure Ideen...
    micha_he

    Edit: In einem neuen Beitrag geht es weiter... Verschlüsselungstools für USB-Stick (AKrypto)

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™