Bonjour à tous, je viens vous demander du secours sur le code suivant :
Private Declare PtrSafe Function GetSystemMenu Lib "User32" _ (ByVal hwnd As LongPtr, ByVal bRevert As LongPtr) As LongPtr Private Declare PtrSafe Function DeleteMenu Lib "User32" _ (ByVal hMenu As LongPtr, ByVal nPosition As LongPtr, _ ByVal wFlags As LongPtr) As LongPtr Private Declare PtrSafe Function FindWindowA Lib "User32" _ (ByVal lpClassName As String, ByVal lpWindowName _ As String) As LongPtr ' ' Adaptation du code de Vasant Nanavati, Andrew Baker (mpep) ' Signification du paramètre : ' 6 : désactive la croix de fermeture d'Excel ' et la commande Fermeture du menu système ' 5 : supprime le trait de séparation du menu système ' avant Fermeture ' 4 : supprime la commande Agrandissement du menu système ' et la commande Agrandir de la fenêtre ' 3 : supprime la commande Réduction du menu système ' et désactive la commande Réduire de la fenêtre ' 2 : désactive la commande Déplacement du menu système ' 1 : supprime la commande Déplacement du menu système ' et désactive la commande Dimension ' 0 : supprime la commande Restauration du menu système ' et désactive la commande Restaurer de la fenêtre Public Sub DisableSystemMenu() On Error Resume Next Dim lHandle As LongPtr, lCount As LongPtr, prm As Integer lHandle = FindWindowA(vbNullString, Application.Caption) If lHandle = 0 Then Exit Sub For prm = 6 To 0 Step -1 DeleteMenu GetSystemMenu(lHandle, False), prm, &H400 Next prm End Sub Private Sub EnableSystemMenu() Dim lHandle As LongPtr: On Error Resume Next lHandle = FindWindowA(vbNullString, Application.Caption) GetSystemMenu lHandle, True End Sub
Grâce à ce code, la croix pour quitter est grisée et inactive.
Mon problème est qu'il reste toujours les commandes "réduire" et "niveau inf."
Si quelqu'un voit la solution.
Merci d'avance
Partager