J'ai créé une petite liseuse de logs qui liste tous les fichiers .log et .bmp d'un dossier et qui les affichent dans une MSGBOX lorsqu'on clique dessus.
Mon problème est que je souhaiterais que ce soit une listview qui s'ouvre lorsque je clic sur un .log et une msgbox pour un .bmp.
Le code actuellement :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <FileConstants.au3>
Global $chemin = "D:\Logs" ; Chemin où se situe les fichiers
Global $files = _FileListToArrayRec($chemin, "*.log;*.bmp", 1) ; Récupération des fichiers
Global $GUI = GUICreate("Liseuse", 220, 250, 100, 200)
Local $idListview = GUICtrlCreateListView("Liste", 10, 10, 200, 220) ;,$LVS_SORTDESCENDING)
_GUICtrlListView_SetColumnWidth($idListview, 0, 170)
GUISetState(@SW_SHOW, $GUI)
Opt("GUIResizeMode", $GUI_DOCKALL)
Local $boutons[$files[0]]
Local $placement = 10
Local $droite = 10
For $i = 1 to $files[0]
$boutons[$i-1] = GUICtrlCreateListViewItem($files[$i], $idListview)
$placement = $placement + 30
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ; Lorsqu'on clic sur la croix de fermeture, on ferme l'application.
Exit
EndSwitch
For $i = 1 to $files[0]
If $nMsg = $boutons[$i-1] Then MsgBox(262144,$files[$i],FileRead($chemin & "\" & $files[$i]))
Next
WEnd► Afficher le texte
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <FileConstants.au3>
#include <GDIPlus.au3>
Global $iShow = 0, $sSelectedFile
Global $chemin = @UserProfileDir & "\Desktop" ; Chemin où se situe les fichiers
Global $files = _FileListToArrayRec($chemin, "*.Log;*.jpg", 1) ; Récupération des fichiers
Global $GUI = GUICreate("Liseuse", 220, 250, 100, 200)
Local $idListview = GUICtrlCreateListView("Liste", 10, 10, 200, 230)
Global $idDummy = GUICtrlCreateDummy()
_GUICtrlListView_SetColumnWidth($idListview, 0, 196)
GUISetState(@SW_SHOW, $GUI)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
Opt("GUIResizeMode", $GUI_DOCKALL)
Local $boutons[$files[0]]
For $i = 1 to $files[0]
$boutons[$i - 1] = GUICtrlCreateListViewItem($files[$i], $idListview)
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $iShow Then _Show()
WEnd
Func _Show()
GUISetState(@SW_DISABLE, $GUI)
Local $nMsgChild
Local $iGuiWidth = 800, $iGuiHeight = 600
$sType = "pic"
If StringRegExp($sSelectedFile, "(?i)\.log$") Then $sType = "log"
If $sType = "pic" Then
_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile ( $chemin & "\" & $sSelectedFile )
$iW = _GDIPlus_ImageGetWidth($hBitmap)
$iH = _GDIPlus_ImageGetHeight($hBitmap)
_GDIPlus_BitmapDispose($hBitmap)
ConsoleWrite($iGuiWidth & "x" & $iGuiHeight & @CRLF)
_GDIPlus_Shutdown()
If $iW > $iH Then
$iGuiHeight = Ceiling($iH * $iGuiWidth / $iW)
Else
$iGuiWidth = Ceiling($iW * $iGuiHeight / $iH)
EndIf
EndIf
$hViewer = GUICreate("Viewer", $iGuiWidth, $iGuiHeight, Default, Default, Default, $WS_EX_TOOLWINDOW, $GUI)
Switch $sType
Case "pic"
GUICtrlCreatePic($chemin & "\" & $sSelectedFile, 0, 0, $iGuiWidth, $iGuiHeight)
Case "log"
Local $idMyedit = GUICtrlCreateEdit("", 10, 10, 780, 580, $ES_AUTOVSCROLL + $WS_VSCROLL)
GUICtrlSetData($idMyedit, FileRead($chemin & "\" & $sSelectedFile), "")
EndSwitch
GUISetState()
While 1
$nMsgChild = GUIGetMsg()
Switch $nMsgChild
Case $GUI_EVENT_CLOSE
GUISetState(@SW_ENABLE, $GUI)
GUIDelete($hViewer)
ExitLoop
EndSwitch
WEnd
$iShow = 0
EndFunc
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $iIDFrom, $iCode, $tNMHDR, $tInfo, $iIndex
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $iIDFrom
Case $idListview
Switch $iCode
Case $NM_CLICK
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
$iIndex = DllStructGetData($tInfo, "Index")
$iShow = 1
$sSelectedFile = _GUICtrlListView_GetItemText($idListview, $iIndex)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY


