Voici un script que je me suis fait sur mesure pour éviter d'installer un logiciel antitpopup.
Ce script permet d'enregistrer le titre des fenêtres non désirées (IE ou firefox ou autre).
Beaucoup de choses à améliorer, c'est la raison pour laquelle je le poste.
Améliorations à développer :
- Ne pas capturer les fenêtres explorer. J'ai par mégarde capturé une fenêtre "poste de travail", sans savoir que ca venait de mon script, j'ai mis un certain temps à m'en rendre compte !

- Pouvoir capturer les popup des navigateurs qui portent des noms par défaut (comme une pub qui aura pour titre "Mozilla firefox")
Merci d'avance pour l'aide apportée.

Ps : La compilation ou le lancement ne fonctionnera pas à cause de l'icône à intégrer. Pour corriger le pb, créez une icône à l'emplacement du script, nommée "apu.ico".
► Afficher le texte
Code : Tout sélectionner
#cs
V1.2.1
Suppression du flag de presence remplacée par processExist
#ce
#RequireAdmin
#include <Constants.au3>
#include <file.au3>
Opt("TrayMenuMode", 3) ; Default tray menu items (Script Paused/Exit) will not be shown.
FileInstall(".\apu.ico", @SystemDir & "\apu.ico", 1);installation de l'icone (tray icon)
;#######################################################################
;############################# VARIABLES ###############################
;#######################################################################
Dim $titreMSG = "ANTI-POPUP", $titre
Dim $msg, $file, $fileYes, $exit, $ajouter, $TrayAide, $TrayAbout, $TrayCapture, $TrayAjouter, $file
Dim $entete = "##########################################################" & @CRLF & _
"Ajoutez ci-dessous le titre des fenetres en liste noire" & @CRLF & _
"##########################################################" & @CRLF
Dim $WinActiveTitle, $msgTitle, $write
;#######################################################################
;############################## PROGRAMME ##############################
;#######################################################################
_ControlActif()
_F_param()
_TrayMenu()
_StartMsg()
While 1
Sleep(10)
$msg = TrayGetMsg();recupere les actions du tray
_killPopup()
Select
Case $msg = 0; tant que pas d'actions sur le tray ($msg)...
ContinueLoop; on recommence la boucle au while
Case $msg = $TrayAbout; si on clique sur "about"...
_Aide(); ca affiche l'aide
Case $msg = $exit;si on clik exit...
_EndMsg()
ExitLoop; ca quite la loop et aussi le programme
Case $msg = $TrayAjouter; si on clik sur ajouter...
_Ajouter(); ca ajoute une ligne a la main
Case $msg = $TrayCapture; si on clik sur capture...
_Capture(); ca lance l utilitaire de capture de titre de fenetre
EndSelect
WEnd
Exit
;#######################################################################
;############################## FONCTIONS ##############################
;#######################################################################
Func _F_param(); Creer le fichier APUparam.ini
If Not FileExists("c:\temp\APUparam.ini") Then; si le fichier param n'existe pas
$file = FileOpen("c:\temp\APUparam.ini", 9); on le cree en mode creation de chemin si chemin n existe pas
If $file = -1 Then; si la creation plante
MsgBox(0, $titreMSG & "Fileopen", "Impossible d'ouvrir le fichier." & @CRLF & @CRLF & "Fin de l'installation."); msg
Exit; on sort du script
EndIf
FileWriteLine($file, $entete); on ecrit l entete du fichier
FileClose($file); on ferme le fichier
EndIf
EndFunc ;==>_F_param
Func _TrayMenu(); On cree le tray icon et ses menus / items
$TrayCapture = TrayCreateItem("Capturer !")
TrayCreateItem(""); cree une ligne de separation
$TrayAjouter = TrayCreateItem("Ajouter (manuellement)")
TrayCreateItem(""); cree une ligne de separation
$TrayAbout = TrayCreateItem("A Propos...")
TrayCreateItem(""); cree une ligne de separation
$exit = TrayCreateItem("Exit")
TraySetIcon(@SystemDir & "\apu.ico"); definit une icone perso
TraySetState(); affiche l icone du tray
EndFunc ;==>_TrayMenu
Func _Aide(); creer une msgbox avec l aide
Local $texteAide = "########################" & @CRLF & _
"ANTI-POPUP Version 1.2" & @CRLF & _
"Develloppé par xxxxxx" & @CRLF & _
"########################" & @CRLF & @CRLF & @CRLF & _
"Capturer une PopUp :" & @CRLF & @CRLF & _
"Cliquer sur l'icone d'anti-popup puis ""Capturer""." & @CRLF & _
"Cliquer ensuite sur la fenetre à ajouter en liste noire." & @CRLF & _
"Une confirmation vous sera demandé pour ajouter la popup" & @CRLF & _
"dans le fichier de parametres." & @CRLF & @CRLF & @CRLF & _
"Le fichier APUparam.ini :" & @CRLF & @CRLF & _
"Un fichier c:\temp\APUparam.ini est créé au demmarrage du programme." & @CRLF & _
"Ce fichier contient les titres des PopUp (IE ou Firefox) à fermer." & @CRLF & _
"Il suffit d'ajouter le titre de la fenetre dans le fichier. (Une par ligne)" & @CRLF & _
"Pour editer rapidement le fichier de parametres, faire un clic sur l'icone d'anti-popup," & @CRLF & _
"puis ""Ajouter""." & @CRLF & @CRLF & @CRLF & _
"Compatibilité :" & @CRLF & @CRLF & _
"Ce programme a été testé uniquement sur envirronement Windows XP Pro SP3." & @CRLF & _
"Il risque donc de mal fonctionner sur des versions comme :" & @CRLF & _
"- Windows XP familial" & @CRLF & "- Windows Vista" & @CRLF & "- Windows Seven" & @CRLF & _
"Ainsi que sur toutes les versions anterieures à Windows XP (W98 / W95 / etc..)" & @CRLF & @CRLF & @CRLF & _
"Pas de copidroite"
MsgBox(64, $titreMSG, $texteAide)
EndFunc ;==>_Aide
Func _Ajouter(); Ouvre le fichier APUparam.ini dans notepad
_F_param();controle l'existence du fichier
If WinExists("APUparam.ini - Bloc-notes") Then; si notepad est deja ouvert sur ce fichier
WinFlash("APUparam.ini - Bloc-notes"); on fait flasher la fenetre de notepad en barre de tache
Else
Local $run = Run("notepad.exe c:\temp\APUparam.ini"); on lance notepad pour l edition du fichier
If $run = 0 Then MsgBox(48, $titreMSG, "Probleme pour ouvrir le fichier de parametres." & @CRLF & _
"Verifier la presence du fichier ou vos droits sur le fichier")
EndIf
EndFunc ;==>_Ajouter
Func _Capture(); capture de titre de popup
_F_param()
TrayTip($titreMSG, "Cliquez sur la fenetre de la popup...", 3, 16); informe le user qu il doit clicker la fenetre popup
While 1
$WinActiveTitle = WinGetTitle("[active]"); recupere le titre de la fenetre active
If $WinActiveTitle <> "" And $WinActiveTitle <> "AutoIt v3" Then; Si le titre de la fenetre n est pas vide et ne contient pas "autoit v3" alors...
TrayTip("", "", 3, 16); on vire le traytip
$msgTitle = MsgBox(36, $titreMSG & " \ Confirmation", $WinActiveTitle & @CRLF & _
@CRLF & @CRLF & "Ajouter ce titre à la liste noire ?"); on demande si le titre est correct et si on l ajoute à la liste noire
If $msgTitle = 6 Then; si le user reponds oui...
_fileWrite();on ecrit le titre dans le fichier param
ExitLoop; puis on sort
Else
ExitLoop; si il reponds "non", on sort
EndIf
EndIf
Sleep(200)
WEnd
EndFunc ;==>_Capture
Func _fileWrite(); Ecrit dans le fichier param les titres des popup
$file = FileOpen("c:\temp\APUparam.ini", 1); ouvre le fichier param en ecriture
If $file = -1 Then
MsgBox(0, $titreMSG, "Impossible d'ouvrir le fichier ""APUparam.ini"" en ecriture.")
EndIf
$write = FileWriteLine($file, $WinActiveTitle); ecrit dans le fichier param le titre de la popup
If $write = 0 Then
MsgBox(48, $titreMSG, "Erreur d'ecriture dans le fichier ""APUparam.ini""." & @CRLF & _
"Ou fichier protégé en écriture.")
Else
FileClose($file); ferme le fichier param
TrayTip($titreMSG, "PopUp ajoutée à la liste noire !", 3)
Sleep(2000)
TrayTip("", "", 0)
EndIf
EndFunc ;==>_fileWrite
Func _killPopup(); Boucle de detection de popup
Local $f_param, $fileCount, $lineTitle, $n = 3, $line
$f_param = FileOpen("c:\temp\APUparam.ini", 0); ouvre le fichier param
$fileCount = _FileCountLines("c:\temp\APUparam.ini"); compte les lignes du fichier
If $fileCount >= 4 Then; du aux 3 1eres lignes d entete, si le fichier comporte 4 lignes ou plus alors...
While 1; on rentre dans la boucle
$n = $n + 1; compteur de ligne
$lineTitle = FileReadLine($f_param, $n); lit la ligne N° $n
If $lineTitle <> "" Then; si la ligne n'est pas vide alors...
_WinClose($lineTitle); on ferme la fenetre de popup
EndIf
If $n = $fileCount Then ExitLoop; si la ligne lue est la derniere, on sort.
WEnd
EndIf
FileClose($f_param); on ferme le fichier
EndFunc ;==>_killPopup
Func _WinClose($titre); ferme les popup
Local $wClose
If WinExists($titre) Then; si une fenetre existe avec le titre lu dans le fichier alors...
$wClose = WinClose($titre); on ferme la fenetre
If $wClose = 0 Then; si la fermeture se fait mal...
MsgBox(0, "", "Winclose KO => Winkill", 3); on avertit que le winclose marche pas et ...
WinKill($titre);on utilise winkill
EndIf
EndIf
EndFunc ;==>_WinClose
Func _StartMsg(); affiche un traytip pour signaler que anti popup est activé
TrayTip($titreMSG, "Activation...", "")
Sleep(1000)
TrayTip("", "", 3)
EndFunc ;==>_StartMsg
Func _EndMsg(); affiche un traytip pour signaler que anti popup est désactivé
TrayTip($titreMSG, "Désactivation...", 3)
Sleep(1000)
TrayTip("", "", 3)
EndFunc ;==>_EndMsg
Func _ControlActif();Verifie si APU est deja lancé
Local $processList, $process = @ScriptName
$processList = ProcessList($process)
If $processList[0][0] <> 1 Then
ProcessClose($process)
EndIf
EndFunc ;==>_ControlActif