Verrouiller tout le systeme

Contenu du snippet

attention le verrouillage du système bloque tous les processus actifs. Pensez à fermer toutes les applications actives avant Exécution.

N'EXECUTEZ PAS DEPUIS VB!!!! Créez et lancer l'exécutable !!!

Source / Exemple :


'source sur le FORM
Public Function traite_tampon(valeur As String) As String
Dim resultat As String
Dim position As Integer
'récupère la position du caractère de séparation "|"
position = InStr(1, valeur, "|", vbTextCompare)

'renvoit le résultat et met à jour la valeur
If position <> 0 Then   'si aucune erreur
resultat = Left(valeur, position - 1)
valeur = Right(valeur, Len(valeur) - position)
traite_tampon = resultat
End If

End Function
 Public Sub fermer_taches(valeur As String)
   
  Dim tache As String
  Dim Cpt As Integer
  Do
  'liste complète peut etre passé en param par exemple
  'terminée par "|"
  
  tache = traite_tampon(valeur)
  If tache <> "" Then
  resultat = FindWindow(vbNullString, tache)
  resultat = SendMessage(resultat, WM_SYSCOMMAND, SC_CLOSE, NILL)
  Else
  Exit Do
  End If
  Cpt = Cpt + 1
  Loop
  End Sub
Public Sub retourne_taches(info_taches As Boolean)
'Fonction permettant de connaitre les Appli en cours
    On Error Resume Next
    Dim Fenetre As Long
    Dim Long_titre As Long
    Dim NomTache As String
    
    'recup 1er fenetre
    Fenetre = GetWindow(Me.hwnd, GW_HWNDFIRST)
    
    While Fenetre <> 0
        
        Long_titre = GetWindowTextLength(Fenetre)
        NomTache = Space$(Long_titre + 1)
        Long_titre = GetWindowText(Fenetre, NomTache, Long_titre + 1)
        NomTache = Left$(NomTache, Len(NomTache) - 1)
        
        If Long_titre <> 0 Then
            If NomTache <> "" And UCase(NomTache) <> App.EXEName Then
                If IsWindowVisible(Fenetre) Then
                    liste_fen = liste_fen & NomTache & "|"
                End If
            End If
        End If
    
    'recup fenetre suivante
    Fenetre = GetWindow(Fenetre, GW_HWNDNext)
    DoEvents 'multitaches
    
    Wend
End Sub
Public Sub verif_modules()
On Error Resume Next
Do
retourne_taches False
Call fermer_taches(liste_fen)
DoEvents
Loop Until Not verrouille
End Sub

Private Sub Form_Load()
If MsgBox("Vous allez verrouiller le système pendant 15 sec. Tous les modules de Windows seront bloqués." & Chr(10) & Chr(10) & " Continuer ?", vbYesNo + vbExclamation, "Verrouillage") = vbYes Then
verrouille = True
Timer1.Interval = 15000
Call verif_modules
Else
Unload Me
End If
End Sub

'ajouter un contrôle TIMER et ajouter le code

Private Sub Timer1_Timer()
verrouille = False
MsgBox "Système déverrouillé", vbInformation, "Verrouillage"
Unload Me
End Sub

'ajouter un MODULE et le code suivant

'API des taches(fenetres)
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpwindowname As String) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function getDesktop Lib "jpeg.dll" (ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal blnJpeg As Boolean, ByVal JPGCompressQuality As Integer, ByVal strFileName As String) As Integer
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'listes de taches
Public Const GW_HWNDFIRST = 0
Public Const GW_HWNDNext = 2

'fermeture des taches
Public Const WM_SYSCOMMAND = &H112
Public Const SC_CLOSE = &HF060&
Public Const NILL = 0&

'variables globales
Public verrouille As Boolean
Public liste_fen As String

Conclusion :


ce programme doit etre utilisé dans le cadre de programme de sécurité ou d'administration. POur de plus amples infos sub-zer0@caramail.com

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.