Das Script soll ein Fenster zeigen, indem alle Ordner und Dateien angezeigt werden.
So ähnlich wie im Windows Explorer nur eben in einer ListView!!
Man soll auch auf einen Ordner klicken können und dann in den Unterordner kommen.
L.G. FireTiger
Das Script soll ein Fenster zeigen, indem alle Ordner und Dateien angezeigt werden.
So ähnlich wie im Windows Explorer nur eben in einer ListView!!
Man soll auch auf einen Ordner klicken können und dann in den Unterordner kommen.
L.G. FireTiger
Ich habe das folgende Script vom Englischen Forum aber da wird das Programm dann beendet, wenn ich auf einen Ordner klicke.
Kann mit jemand helfen?
Hat schon jemand anders sowas gemacht?
Hier das Script:
#include <GuiImageList.au3>
#include <GUIListView.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
Global Const $tagSHFILEINFO = "dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];"
Global Const $SHGFI_USEFILEATTRIBUTES = 0x10
Global Const $SHGFI_SYSICONINDEX = 0x4000
Global Const $FILE_ATTRIBUTE_NORMAL = 0x80
Global Const $SHGFI_SMALLICON = 0x1
Global Const $SHGFI_LARGEICON = 0x0
Global Const $FOLDER_ICON_INDEX = _GUIImageList_GetFileIconIndex(@SystemDir, 0, 1)
Global Const $NOICON_ICON_INDEX = _GUIImageList_GetFileIconIndex("nb lgl", 0, 0)
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=D:\Dokumente\Dateien von Andreas\AutoIt3\FTP\GUI_MAIN.kxf
Global $GUI_MAIN = GUICreate("Au3FTP", 882, 586, 193, 125)
GUISetOnEvent(-3,"GUI_Close")
Global $inpLocalDirectory = GUICtrlCreateInput("", 8, 28, 369, 20, $ES_READONLY)
Global $ListView1 = GUICtrlCreateListView("Name|Datum|Größe", 8, 48, 369, 489)
Global $SHELLLISTVIEWHANDLE = GUICtrlGetHandle($ListView1) ; Get the Handle
[/autoit] [autoit][/autoit] [autoit]GUICtrlSendMsg($ListView1, 0x101E, 0, 200)
GUICtrlSendMsg($ListView1, 0x101E, 1, 75)
GUICtrlSendMsg($ListView1, 0x101E, 2, 50)
GUIRegisterMsg($WM_NOTIFY, "_SHLV_WM_NOTIFY")
_GUICtrlListView_SetImageList($ListView1, _GUIImageList_GetSystemImageList(), 1)
Global $DIRECTORY_LOCAL = "" ; Start with Selection of drives (IMG:http://www.autoitscript.com/forum/style_em…utoit/smile.gif)
_SHLV_PopulateLocalListView($SHELLLISTVIEWHANDLE,$DIRECTORY_LOCAL)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func GUI_Close()
Exit
EndFunc
; Prog@ndy
Func _SHLV_PopulateLocalListView($hListView1,ByRef $DIRECTORY_LOCAL)
If $DIRECTORY_LOCAL = "" Then
Local $drives = DriveGetDrive("ALL")
GUICtrlSetData($inpLocalDirectory, "Drive Selection")
_GUICtrlListView_BeginUpdate($hListView1)
_GUICtrlListView_DeleteAllItems($hListView1)
For $i = 1 To $drives[0]
_GUICtrlListView_AddItem($hListView1, StringUpper($drives[$i]) & "\", _GUIImageList_GetFileIconIndex($drives[$i] & "\"))
Next
_GUICtrlListView_EndUpdate($hListView1)
Return
EndIf
If StringRight($DIRECTORY_LOCAL, 1) <> "\" Then $DIRECTORY_LOCAL &= "\"
If DriveStatus(StringLeft($DIRECTORY_LOCAL, 3)) <> "READY" Then Return 0 * MsgBox(16 + 8192, 'Error on Drive Access', "Drive " & StringLeft($DIRECTORY_LOCAL, 3) & " not ready!")
GUICtrlSetData($inpLocalDirectory, $DIRECTORY_LOCAL)
$files = _SHLV__FileListToArray2($DIRECTORY_LOCAL, "*.*", 2)
_GUICtrlListView_BeginUpdate($hListView1)
_GUICtrlListView_DeleteAllItems($hListView1)
_GUICtrlListView_SetItemCount($hListView1,$files[0])
_GUICtrlListView_AddItem($hListView1, "[..]", 1)
If IsArray($files) Then
For $i = 1 To $files[0]
$item = _GUICtrlListView_AddItem($hListView1, $files[$i], $FOLDER_ICON_INDEX)
_GUICtrlListView_AddSubItem($hListView1, $item, __SHLV_FormatFilesize(DirGetSize($DIRECTORY_LOCAL & $files[$i], 2)), 2)
Next
EndIf
Local $foldercount
$files = _SHLV__FileListToArray2($DIRECTORY_LOCAL, "*.*", 1)
_GUICtrlListView_EndUpdate($hListView1)
_GUICtrlListView_BeginUpdate($hListView1)
_GUICtrlListView_SetItemCount($hListView1,$files[0]+$foldercount)
If IsArray($files) Then
For $i = 1 To $files[0]
$item = _GUICtrlListView_AddItem($hListView1, $files[$i], _GUIImageList_GetFileIconIndex($files[$i]))
_GUICtrlListView_AddSubItem($hListView1, $item, __SHLV_FileDateString2Calc(FileGetTime($DIRECTORY_LOCAL & $files[$i], 0, 1)), 1)
_GUICtrlListView_AddSubItem($hListView1, $item, __SHLV_FormatFilesize(FileGetSize($DIRECTORY_LOCAL & $files[$i])), 2)
Next
EndIf
_GUICtrlListView_EndUpdate($hListView1)
EndFunc ;==>_SHLV_PopulateLocalListView
; Prog@ndy
Func __SHLV_FormatFilesize($size)
Select
Case $size > 1000
Return Round($size / 1024, 1) & " KB"
Case $size > 1048500
Return Round($size / 1048576, 1) & " MB"
Case Else
Return $size & " Byte"
EndSelect
EndFunc ;==>_FormatFilesize
; Prog@ndy
Func _GUIImageList_GetSystemImageList($bLargeIcons = False)
Local $dwFlags, $hIml, $FileInfo = DllStructCreate($tagSHFILEINFO)
$dwFlags = BitOR($SHGFI_USEFILEATTRIBUTES, $SHGFI_SYSICONINDEX)
If Not ($bLargeIcons) Then
$dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
EndIf
;~ '// Load the image list - use an arbitrary file extension for the
;~ '// call to SHGetFileInfo (we don't want to touch the disk, so use
;~ '// FILE_ATTRIBUTE_NORMAL && SHGFI_USEFILEATTRIBUTES).
$hIml = _WinAPI_SHGetFileInfo(".txt", $FILE_ATTRIBUTE_NORMAL, _
DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), $dwFlags)
Return $hIml
EndFunc ;==>_GUIImageList_GetSystemImageList
; Prog@ndy
Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
Local $return = DllCall("shell32.dll", "DWORD*", "SHGetFileInfo", "str", $pszPath, "DWORD", $dwFileAttributes, "ptr", $psfi, "UINT", $cbFileInfo, "UINT", $uFlags)
If @error Then Return SetError(@error, 0, 0)
Return $return[0]
EndFunc ;==>_WinAPI_SHGetFileInfo
; Prog@ndy
Func _GUIImageList_GetFileIconIndex($sFileSpec, $bLargeIcons = False, $bForceLoadFromDisk = False)
Local $dwFlags, $FileInfo = DllStructCreate($tagSHFILEINFO)
$dwFlags = $SHGFI_SYSICONINDEX
If $bLargeIcons Then
$dwFlags = BitOR($dwFlags, $SHGFI_LARGEICON)
Else
$dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
EndIf
;~ ' We choose whether to access the disk or not. If you don't
;~ ' hit the disk, you may get the wrong icon if the icon is
;~ ' not cached. But the speed is very good!
If Not $bForceLoadFromDisk Then
$dwFlags = BitOR($dwFlags, $SHGFI_USEFILEATTRIBUTES)
EndIf
;~ ' sFileSpec can be any file. You can specify a
;~ ' file that does not exist and still get the
;~ ' icon, for example sFileSpec = "C:\PANTS.DOC"
Local $lR = _WinAPI_SHGetFileInfo( _
$sFileSpec, $FILE_ATTRIBUTE_NORMAL, DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
$dwFlags _
)
If ($lR = 0) Then
Return SetError(1, 0, -1)
Else
Return DllStructGetData($FileInfo, "iIcon")
EndIf
EndFunc ;==>_GUIImageList_GetFileIconIndex
; Author(s): Prog@ndy
Func __SHLV_FileDateString2Calc($filedate)
Return StringRegExpReplace($filedate, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1/$2/$3 $4:$5:$6")
EndFunc ;==>_FileDateString2Calc
; Author(s): Prog@ndy
Func __SHLV_CalcDate2FileDateString($calcdate)
Return StringRegExpReplace($calcdate, "(\d{4})/(\d{2})/(\d{2}) (\d{2})(IMG:http://www.autoitscript.com/forum/style_em…/autoit/sad.gif) \d{2})(IMG:http://www.autoitscript.com/forum/style_em…/autoit/sad.gif) \d{2})", "$1$2$3$4$5$6")
EndFunc ;==>_CalcDate2FileDateString
; Prog@ndy
Func _SHLV_WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo, $hListView1 = $SHELLLISTVIEWHANDLE
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView1
Switch $iCode
Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
;~ _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
;~ "-->Code:" & @TAB & $iCode & @LF & _
;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
ConsoleWrite("lll" & @CRLF)
If _GUICtrlListView_GetItemImage($hListView1, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
$DIRECTORY_LOCAL &= _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
_SHLV_PopulateLocalListView($ListView1,$DIRECTORY_LOCAL)
ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
$DIRECTORY_LOCAL = _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
_SHLV_PopulateLocalListView($ListView1,$DIRECTORY_LOCAL)
ElseIf _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index")) = "[..]" Then
Local $slash = StringInStr($DIRECTORY_LOCAL, "\", 1, -2)
If $slash Then
$DIRECTORY_LOCAL = StringLeft($DIRECTORY_LOCAL, $slash)
ElseIf StringRegExp($DIRECTORY_LOCAL, "\A[A-Za-z]:\\\Z") Then
$DIRECTORY_LOCAL = ""
EndIf
_SHLV_PopulateLocalListView($ListView1,$DIRECTORY_LOCAL)
EndIf
; No return value
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
; Author ........: SolidSnake <MetalGX91 at GMail dot com>
; Modified by Prog@ndy
Func _SHLV__FileListToArray2($sPath, $sFilter = "*", $iFlag = 0)
Local $hSearch, $sFile, $asFileList
If Not FileExists($sPath) Then Return SetError(1, 1, "")
If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, = "") Then Return SetError(2, 2, "")
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "")
If (StringMid($sPath, StringLen($sPath), 1) = "\") Then $sPath = StringTrimRight($sPath, 1) ; needed for Win98 for x:\ root dir
$hSearch = FileFindFirstFile($sPath & "\" & $sFilter)
If $hSearch = -1 Then Return SetError(4, 4, "")
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then
SetError(0)
ExitLoop
EndIf
If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") <> 0 Then ContinueLoop
If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop
$asFileList &= $sFile & @CR
;~ ReDim $asFileList[UBound($asFileList) + 1]
;~ $asFileList[0] = $asFileList[0] + 1
;~ $asFileList[UBound($asFileList) - 1] = $sFile
WEnd
FileClose($hSearch)
Return StringSplit(StringTrimRight($asFileList,1),@CR)
EndFunc ;==>_SHLV__FileListToArray2
Danke im Vorraus
Ja, RegRead und RegWrite kenn ich!
Ich will das ganze mit Autoit machen ohne Neuanmeldung oder Neustart!
Hallo Community,
ich will die AutoRun Funktion abschalten, wenn mein Programm aktiv ist und wenn man es wieder schließt dann sol die AutoRun Function wieder aktiviert sein!
Also ich meine dass, wenn man eine CD einlegt öffnet sich bei mir immer der Explorer mit dem Inhalt der CD, dass soll dann eben nicht geschehen!
L.G. FireTiger
Hi,
wenn ich z.B. bestimmte Styles im GuiCreate etc setzte kommt immer folgende Fehlermeldung: "Error: Variable used being declared." :wacko:
An was kann das liegen
Ich habe als Includes schon #Include <WindowsConstants.au3> und #Include <GuiConstants.au3> aber es funktioniert nicht!
Der Wert der Variable als Zahl funktioniert aber immer.
Hier ein Script was z.B. nicht funktioniert:
#Include <GuiConstants.au3>
#Include <GuiListView.au3>
#Include <WindowsConstants.au3>
GUICreate("ListView Test", 600, 400)
$lvTEST = GUICtrlCreateListView("Out|Gerätename|Herst.-SN|Info", 10, 10, 580, 385,BitOR($LVS_SHOWSELALWAYS, $LBS_MULTIPLESEL ), _
BitOR($LVS_EX_CHECKBOXES, $WS_EX_CLIENTEDGE, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
GUICtrlSetTip(-1, "Sortieren mit Klick auf den Spaltenkopf")
_GUICtrlListViewSetColumnWidth(-1,0,40)
_GUICtrlListViewSetColumnWidth(-1,1,150)
_GUICtrlListViewSetColumnWidth(-1,2,150)
_GUICtrlListViewSetColumnWidth(-1,3,236)
_GUICtrlListViewJustifyColumn (-1, 0, 2)
_GUICtrlListViewJustifyColumn (-1, 2, 1)
_SetData()
Dim $DESCENDING[_GUICtrlListViewGetSubItemsCount ($lvTEST) ]
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $lvTEST
_GUICtrlListViewSort($lvTEST, $DESCENDING, GUICtrlGetState($lvTEST))
EndSelect
WEnd
Func _SetData()
GUICtrlCreateListViewItem("A|Gerät1|123456|blabla", $lvTEST)
GUICtrlCreateListViewItem("B|Gerät2|123457|hlahhw", $lvTEST)
GUICtrlCreateListViewItem("C|Gerät3|123458|b,sa,dm", $lvTEST)
GUICtrlCreateListViewItem("D|Gerät4|123459|wtrrew", $lvTEST)
GUICtrlCreateListViewItem("E|Gerät5|123450|adsgw", $lvTEST)
GUICtrlCreateListViewItem("F|Gerät6|123410|lqopwhs", $lvTEST)
GUICtrlCreateListViewItem("G|Gerät7|123411|mybffa", $lvTEST)
GUICtrlCreateListViewItem("H|Gerät8|123412|qqwtze", $lvTEST)
EndFunc
Es kommt folgende Fehlermeldung:
autoit.de/wcf/attachment/4424/
Hoffentlich kann mir jemand helfen!
Ja das Progt ist cool, aber du könntest noch ein paar Sachen verbessern:
1. Mit ToolTip würde ich noch mehr Informationen setzten, sonst weiß man ja nicht welches Symbol was bedeutet.
2. Mehr Optionen zum Speichern und vielleicht zweisprachig [Englisch/Deutsch]
L.G. FireTiger
Hi, das geht mit:
[autoit]#include <File.au3>
[/autoit][autoit][/autoit][autoit]$file = FileOpenDialog("Print File", "", "Text Documents (*.txt)", 1)
If @error Then Exit
$print = _FilePrint($file)
If $print Then
MsgBox(0, "Print", "Die Datei wird auf dem Standarddrucker gedruckt!")
Else
MsgBox(0, "Print", "Fehler: " & @error & @CRLF & "Die Datei konnte nicht gedruckt werden.")
EndIf
Du musst es so machen:
[autoit]DirCopy ("c:\test", "c:\"&@computername)
[/autoit]Für wasgehört dann deine UDF?
Gibt es eine UDF die auf den Webserver zugreifen kann?
ZitatDas Problem ist aber, dass die meisten Hoster die Datenbanken für externen Zugriff sperren Du kannst sie also nur vom Webserver aus erreichen.
Wie meinst du das? Kannst du mir mal ein Beispiel posten?
Hi, ich habe ein kleine Frage:
"Kann man mit dieser MySQL UDF auf eine Internet MySQL Datenbank bei einem Webshhoster zugreifen?"
Bei mir hats nicht geklappt oder gehört das nur für eine lokale Datenbank?
L.G. FireTiger
Das hab ich scon probiert aber das will nicht funktionieren!
Das Fenster bleibt da wo es ist!
Hat sonst keiner mehr eine Idee?
Wie kann ich dieses Fenster ansprechen?
das es z.B. versteckt (@SW_Hide) wird und dann wieder angezeigt wird??
Danke im Vorraus
Meine Fenster-Log Datei:
>>>> Window <<<<
Title:
Class: ATL:0071E2E0
Position: 1110, 866
Size: 170, 128
Style: 0x94000000
ExStyle: 0x00000088
Handle: 0x0020033C
>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle: 0x0001012E
>>>> Mouse <<<<
Position: 1172, 884
Cursor ID: 0
Color: 0xDEDEDE
>>>> StatusBar <<<<
>>>> Visible Text <<<<
>>>> Hidden Text <<<<
FireTiger (Home)
Alles anzeigen
Wo finde ich diese Function?
Stelle an das Anfang an dein Script das du Adimistrator Zugang hast:
[autoit]#RequireAdmin
[/autoit]Ich habs mir durchgeschaut aber ich weiß nicht wie ich ein vorhandenes Trayicon eines anderen Programmes verstecken kann!
Vielleicht hat ja jemand ein kleines Beispiel für mich!
Hi Autoit.de Community,
Ich habe ein Programm das im Tray minimiert ist! (kein autoit programm) ich will, dass man dieses Tray Icon dieses Programmes steuern und es verstecken mit z.b. @SW_HIDE kann.
Ich bin euch dankbar wenn ihr mir weiterhelfen könnt!
mfg FireTiger
Ich glaube er meint, dass es die zugangsdaten in einer MySql Datenbank speichern soll und diese dann Autoit dann abfrägt also eine DB die auch im Internet zur Verfügung steht.
Die man dann zuerst mit PHP Konfigurieren muss!
L.G. FireTiger
Narütlich wird ein leeres Bild gespeichert, wenn du keinen Pfad zum jetzigen Bild angibst
also du musst es so machen:
_GDIPlus_Startup()
$load_Image = @WorkingDir&"\test.gif" ;Der Pfad zum Bild das in ein .ico umgewandelt werden soll
$hImage = _GDIPlus_ImageLoadFromFile($load_Image)
$sCLSID = _GDIPlus_EncodersGetCLSID("ICO")
Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, 48, 48)
_GDIPlus_GraphicsDispose($hGraphics)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iWidth, $iHeight)
_GDIPlus_ImageSaveToFileEx($hBitmap, $icon, $sCLSID)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
(script not tested)
mfg FireTiger