et choisir les prg qui peuvent etre ouvert sur votre Ordi
le prg commence par demander un mot de pass , pour eviter que n'importe qui puisse changer les regles
entrez "zorro"
ensuite l'interface s'affiche , vous aurez alors la liste des fenetres actuellement ouvertes sur votre Ordi
dans une ListIconGadget muni de cases a cocher
il suffit de cocher une ou plusieurs case des prg (ou fenetres) que vous ne voulez pas qu'ils soient en marche (ça va les arreter ..) ou ouverte (pour les fenetres)
bref, on creer les regles !
une fois la case "Activ" coché , le timer vérifiera toutes les 10 secondes si l'une des fenetres dont la case est cochée , est ouverte, si c'est le cas, Cerber, va la refermer
il peut s'agir d'une fenetre de navigateur, ou d'une fenetre pointant sur l'un de vos dossiers ...
si on reduit cerber , le fait de vouloir le reafficher, redemande le mot de pass
en l'etat, je ne sauve rien, donc si on quitte cerber, il faudrai bien sur re-cocher les fenetres qu'on ne veux pas voir actives
il suffirai de sauver les regles pour ensuite les retrouver au prochain lancement de cerber
de plus, je n'actualise pas la liste de applications ouvertes APRES le lancement de Cerber
c'est une base pour faire un programme qui pourrai empêcher un membre de la famille d'utiliser un jeux, ou une adresse internet précise
voir carrement une application
bref un Cerber de votre ordinateur
il demande a etre paufiné , je pense toutefois, que c'est une bonne base pour commencer
je n'ai pas ajouté de test pour relancer Cerber si celui-ci etait viré de la ram par un Ctrl+Alt+Del
mais ce serai relativement simple a ajouter
le code :
Code : Tout sélectionner
;***********************************************
;Titre :*Cerber
;Auteur : ZORRO
;Date :16/03/2017
;Heure :16:21:04
;Version Purebasic : PureBasic 5.50 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune
;***********************************************
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Win
EndEnumeration
;}
;{ Gadgets
Enumeration
#ListView_0
#Text_1
#Text_2
#Text_3
#Button_Ajout_Prg
#Button_supr_prg
#CheckBox_activ
#Timer
EndEnumeration
;}
;{ Fonts
Enumeration
#Font_Text_2
EndEnumeration
;}
Define.l Event
Global Activ,pass.s,Flag_reduc.i
;}
Declare openwindow_win()
Declare liste_window(liste_id)
; Verifie si on lance 2 fois Cerber , si c'est le cas, demande a nouveau le mot de passe
; et ne lance pas 2 fois Cerbert mais réactualise Cerber
#MUTEX_ALL_ACCESS = $1F0001
Application.s= "Cerber"
Hmutex = OpenMutex_( #MUTEX_ALL_ACCESS , #False ,Application)
If Hmutex=0
;Si le mutex existe alors l'application est déjà lancée.
;sinon on le crée
Hmutex = CreateMutex_( #Null , #True , Application)
If Hmutex=0
;Fin du programme mutex non créer
CloseHandle_(Hmutex)
End
EndIf
Else
;On recherche l'application
;pour la mettre au premier plan.
pass.s=InputRequester( "info","Entrez le password","")
if pass.s="zorro"
Handle= FindWindow_( #Null , Application)
ShowWindow_(Handle, #SW_HIDE )
ShowWindow_(Handle, #SW_MINIMIZE )
ShowWindow_(Handle, #SW_RESTORE )
Endif
End
EndIf
pass.s=InputRequester( "info","Entrez le password","")
OpenWindow_Win()
;;ListeProcessCourt(#ListView_0)
Liste_Window(#ListView_0)
;{- Event loop
Repeat
; on teste si on cherche a activer la fenetre de Cerber
if GetWindowState(#win)=#PB_Window_Minimize
Flag_reduc=#true
Endif
if GetWindowState(#win)=#PB_Window_Normal and Flag_reduc=#true ; on cherche a ouvrir la fenetre de Cerber
SetWindowState(#win,#PB_Window_Minimize) ; on force a etre minimisé par defaut
Flag_reduc=#False
pass.s=InputRequester( "info","Entrez le password","") ; test le password
if pass.s="zorro"
SetWindowState(#win,#PB_Window_Normal) ; c'est le bon password, on active la fenetre pour pouvoir utiliser Cerber modifier ses parametres
Endif
Endif
Event = WaitWindowEvent(12)
Select Event
; ///////////////////
Case #PB_Event_Timer ; chaque seconde
If EventTimer() = #Timer ; ok Timer On
;Liste_Window(#ListView_0) ; on remplis la liste avec le nom des fenetres ouvertes
Activ= GetGadgetState(#CheckBox_activ) ; on verifie si on a activé
If Activ=#true ; si actif
For i=0 to CountGadgetItems(#ListView_0) ; pour chaque ligne de la liste
if GetGadgetItemState(#ListView_0,i)=#PB_ListIcon_Checked ; le prg est coché !!
Nom_appli.s=trim(GetGadgetItemText(#ListView_0, i) ); on recupere le nom de l'appli a bloquer
hWinCalc = FindWindow_(#Null,Nom_appli.s) ; on regarde si le prg est present
if hWinCalc ; Present ??
SendMessage_(hWinCalc,#WM_SYSCOMMAND,#SC_CLOSE,0) ; ben on le ferme
Endif
Endif
Next i
Endif
Endif
Case #PB_Event_Gadget
Select EventGadget()
Case #ListView_0
Case #Text_1
Case #Text_2
Case #Text_3
Case #CheckBox_activ
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Win
CloseWindow(#Win)
Break
EndSelect
EndSelect
Forever
Procedure OpenWindow_Win()
If OpenWindow(#Win, 536, 143, 362, 494, "Cerber", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
if pass.s="zorro"
;ListViewGadget(#ListView_0, 35, 70, 290, 355, #PB_ListView_ClickSelect)
ListIconGadget(#ListView_0, 35, 70, 290, 355, "Process", 355,#PB_ListIcon_CheckBoxes )
TextGadget(#Text_1, 40, 45, 155, 20, "Liste des Applis a bloquer")
TextGadget(#Text_2, 120, 5, 110, 35, "Cerber")
TextGadget(#Text_3, 240, 25, 80, 20, "V1.00 By Zorro")
CheckBoxGadget(#CheckBox_activ, 255, 45, 60, 20, "Active")
; Gadget Fonts
SetGadgetFont(#Text_2, LoadFont(#Font_Text_2, "Microsoft Sans Serif", 24, #PB_Font_Bold|#PB_Font_HighQuality))
; Timer
AddWindowTimer(#Win, #Timer, 10000) ; chaque seconde
Endif
EndIf
EndProcedure
;-*********************************
Procedure Liste_Window(liste_ID)
ClearGadgetItems(liste_ID)
hwnd.l = FindWindow_ ( 0, 0 )
While hwnd <> 0
If GetWindowLong_ (hwnd, #GWL_STYLE ) & #WS_VISIBLE = #WS_VISIBLE
; If GetwindowLong_(Hwnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW
txt.s = Space (256)
GetWindowText_ (hwnd, txt, 256)
If txt <> ""
; Debug txt
AddGadgetItem(liste_ID, -1, txt)
EndIf
; EndIf
EndIf
hwnd = GetWindow_ (hwnd, #GW_HWNDNEXT )
Wend
EndProcedure
;Epb
;}