[R] Erreur lors de la suppression d'imprimantes

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[R] Erreur lors de la suppression d'imprimantes

#1

Message par jpascal »

Bonjour,

J'utilise ce code pour supprimer mes imprimantes réseau :

Code : Tout sélectionner

Local $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Local $colInstalledPrinters =  $objWMIService.ExecQuery ("Select * from Win32_Printer Where Network = TRUE")
    If IsObj($colInstalledPrinters) Then
        For $objPrinter In $colInstalledPrinters
                $objPrinter.Delete_
        Next
    Else
        MsgBox($MB_SYSTEMMODAL + $MB_ICONINFORMATION, "", "Pas d'imprimante trouvée")
    EndIf
Il fonctionne bien la plupart du temps mais lorsque parfois certaines imprimantes ne sont pas supprimables (problème de droit), alors AutoIt plante.

Est-ce que la seule solution pour moi est de lancer un Powershell ou un VBscript par le biais d'AutoIt ou puis-je tester le droit de suppression de mon objet imprimante avant suppression ?
Modifié en dernier par jpascal le lun. 09 nov. 2015 15:14, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Erreur lors de la suppression d'imprimantes

#2

Message par jpascal »

A priori la solution se trouve dans :

Code : Tout sélectionner

Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
:D

Je teste et reviens vers vous.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Erreur lors de la suppression d'imprimantes

#3

Message par jpascal »

La solution est simplissime.

Ajouter ces lignes :

Code : Tout sélectionner

Global $g_bEventError = False
Global $g_oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Cette fonction :

Code : Tout sélectionner

Func MyErrFunc()
    $g_bEventError = True
EndFunc   ;==>MyErrFunc
Et cette ligne, par exemple, après la boucle de suppression :

Code : Tout sélectionner

If $g_bEventError Then Exit MsgBox($MB_ICONERROR + $MB_TOPMOST, "", "Une erreur est survenue lors de la suppression des imprimantes.")
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre