J'ai commencé à réaliser cette petite application pour exporter et importer la configuration d'imprimante mais je bloque pour la mise en place d'une barre de progression pendant l'exportation/importation.
Merci pour votre aide !
Script fonctionnelle :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <ProgressConstants.au3>
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
HotKeySet("{ESC}", "_Terminate")
Opt("GUIOnEventMode", 1) ; Activation du mode événementiel
$GUIAppli = GUICreate("Export - Import Printers", 338, 145, -1, -1)
GUISetBkColor(0xFFFFFF)
$Label1 = GUICtrlCreateLabel("Export - Import Printers", 59, 16, 219, 28, $SS_CENTER)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$BtnExport = GUICtrlCreateButton("Exporter", 48, 60, 91, 41)
$BtnImport = GUICtrlCreateButton("Importer", 200, 60, 91, 41)
GUICtrlSetOnEvent($BtnExport, "_ExportPrinters")
GUICtrlSetOnEvent($BtnImport, "_ImportPrinters")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Terminate")
GUISetState(@SW_SHOW)
$GUIExport = GUICreate("Export - Import Printers", 338, 145, 192, 124)
GUISetBkColor(0xFFFFFF)
$Progress1 = GUICtrlCreateProgress(10, 30, 318, 25, $PBS_MARQUEE)
GUICtrlSendMsg($Progress1, 0x0400 + 10, 1, Number(30))
$Label3 = GUICtrlCreateLabel("Export en cours... Patienter", 7, 90, 322, 27, $SS_CENTER)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Terminate")
$GUIImport = GUICreate("Export - Import Printers", 338, 145, 192, 124)
GUISetBkColor(0xFFFFFF)
$Progress2 = GUICtrlCreateProgress(10, 30, 318, 25, $PBS_MARQUEE)
GUICtrlSendMsg($Progress2, 0x0400 + 10, 1, Number(30))
$Label4 = GUICtrlCreateLabel("Import en cours... Patienter", 7, 90, 322, 27, $SS_CENTER)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Terminate")
While 1 ; Début de la boucle infinie
Sleep(100) ; Pause du script
WEnd ; Fin de la boucle infinie
Func _ExportPrinters() ;Exporter la configuration des imprimantes du poste
Local $default_name = @ComputerName & ".printersExport"
GUISetState(@SW_HIDE, $GUIAppli)
Local $sFileSaveDialog = FileSaveDialog("Exporter", @ScriptDir & "\", "Fichier (*.printersExport)", $FD_PROMPTOVERWRITE, $default_name)
If @error Then
; Display the error message.
MsgBox($MB_SYSTEMMODAL, "", "Export annulé.")
FileChangeDir(@ScriptDir)
Else
FileChangeDir(@ScriptDir)
FileDelete($sFileSaveDialog)
GUISetState(@SW_SHOW, $GUIExport)
Local $iPid1 = Run(@ComSpec & ' /c ' & 'PrintBrm.exe -B -F ' & $sFileSaveDialog, 'C:\Windows\System32\spool\tools', @SW_HIDE, 2)
While ProcessExists($iPid1)
$sStream1 = StdoutRead($iPid1)
If @error Then ExitLoop
$aPercent1 = StringRegExp($sStream1, "(?m)^\*+\h+(\d+)%", 1)
If IsArray($aPercent1) Then GUICtrlSetData($Progress1, $aPercent1[0])
WEnd
EndIf
GUISetState(@SW_SHOW, $GUIAppli)
GUISetState(@SW_HIDE, $GUIExport)
EndFunc ;==>_ExportPrinters
Func _ImportPrinters() ;Importer la configuration des imprimantes du poste
GUISetState(@SW_HIDE, $GUIAppli)
; Afficher une boite de dialogue pour choisir le fichier à importer
Local $sFileOpenDialog2 = FileOpenDialog("Importer", @ScriptDir & "\", "Fichier (*.printersExport)", $FD_FILEMUSTEXIST)
If @error Then
; Display the error message.
MsgBox($MB_SYSTEMMODAL, "", "Aucun fichier de sélectionné.")
FileChangeDir(@ScriptDir)
Else
FileChangeDir(@ScriptDir)
GUISetState(@SW_SHOW, $GUIExport)
Local $iPid2 = Run(@ComSpec & ' /c ' & 'PrintBrm.exe -R -F ' & $sFileOpenDialog2, 'C:\Windows\System32\spool\tools', @SW_HIDE, 2)
While ProcessExists($iPid2)
$sStream2 = StdoutRead($iPid2)
If @error Then ExitLoop
$aPercent2 = StringRegExp($sStream2, "(?m)^\*+\h+(\d+)%", 1)
If IsArray($aPercent2) Then GUICtrlSetData($Progress2, $aPercent2[0])
WEnd
EndIf
GUISetState(@SW_SHOW, $GUIAppli)
GUISetState(@SW_HIDE, $GUIExport)
EndFunc ;==>_ImportPrinters
Func _Terminate() ; Quitter le script
Exit ; Sortie du script
EndFunc ;==>_Terminate