Re et re desactiver X

cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008 - 15 mars 2006 à 15:08
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008 - 16 mars 2006 à 20:31
bonjour, bon bah apparement ca doit saouler ces question ac desactiver X!!!

le problème c que j'en ai besoin... alors effectivement j'ai cherché sur le forum et on m'a aidé a trouver le code, cool!!

le voilà:

'*****************************************
' Dans la partie déclaration du formulaire
'*****************************************
Public Const MF_BYPOSITION = &H400&

'Cette fonction API sert à prendre le menu qui apparaît lors du clic en haut à gauche du form (sous-menus "Restaurer", "Déplacer", "Réduire", "Fermer", ...)
Public Declare Function GetSystemMenu _
Lib "user32" _
(ByVal hwnd As Long, _
ByVal bRevert As Long) As Long

'Cette fonction API sert à enlever un de ces sous-menus
Public Declare Function RemoveMenu _
Lib "user32" (ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long

'Cette fonction API sert à connaître le nombre de sous-menus dans ce même menu
Public Declare Function GetMenuItemCount _
Lib "user32" _
(ByVal hMenu As Long) As Long





'*******************************************
' Dans la partie programmation du formulaire
'*******************************************
Public Sub DesactiverX(f_hwnd As Long)

Dim lSysMenu As Long
Dim lItemCount As Long
Dim lRet As Long

'Prend l'ID du menu
lSysMenu = GetSystemMenu(f_hwnd, False)

'Prend le nombre d'objet (sous-menus) du menu
lItemCount = GetMenuItemCount(lSysMenu)

'Suppression de sous-menu
lRet = RemoveMenu(lSysMenu, lItemCount - 1, MF_BYPOSITION)
lRet = RemoveMenu(lSysMenu, lItemCount - 2, MF_BYPOSITION)
lRet = RemoveMenu(lSysMenu, lItemCount - 3, MF_BYPOSITION)
lRet = RemoveMenu(lSysMenu, lItemCount - 4, MF_BYPOSITION)

End Sub


merveilleux, sauf que j'ai mis tt çà dans un module, mais voilà ca ne fonctionne pas!

certainement faut -il séparer la partie déclaration de la partie programmation!! mais je ne sais pa je débute!

donc un peu d'aide serait la bienvenu!

merci!!

Achi....

6 réponses

Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
15 mars 2006 à 15:27
Lorsque tu dis que ça ne fonctionne pas, tu veut dire que tu ne sais pas comment le faire fonctionner ou alors tu as des messages d'erreur?
0
PhilocheMan Messages postés 55 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 23 mars 2006 1
15 mars 2006 à 15:33
Facile mon gars...

Tu mets tout ca dans un module, tu crées dans ta form un bouton et tu ajoutes sur le code de ton bouton :

Private Sub MonBouton_Click()
Call DesactiverX(Me.hwnd)
End Sub

Et hopp !
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 21
15 mars 2006 à 16:20
PhilocheMan non non sa ne marche pas du tout, en tout cas sous Excel 2003.
Achi, il faudrait dans un premier temps faire un FindWindow pour avoir le handle de ta fenêtre Excel.
Arf je ne peux pas de donner un exemple maintenant.
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
15 mars 2006 à 17:07
wahou!! findwindow et handle.... eh bin avec tt çà je-suis pas sorti de l'auberge...

faudra qd même un exemple... si tu as le tps willi ce serait cool parce là je suis loin très loin!!

merci

Achi !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
16 mars 2006 à 10:36
utilise l'événement form_QuerryClose pour intercepter le click sur X et annuler la fermeture.

Pour activer ou désactiver, utilise une variable module qui sera modifiée par un bouton :

Ca donne ça :

Dim annuler As Boolean


Private Sub CommandButton1_Click()
annuler = Not annuler
End Sub


Private Sub UserForm_Initialize()
annuler = True
End Sub


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)If CloseMode vbFormControlMenu And annuler True Then
Cancel = True
End If
End Sub

+++ K@lobit
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
16 mars 2006 à 20:31
bonsoir,

je ne désire pas passer par un bouton Kalobit!!

je ne comprends pas, le code que j'ai mis plus haut sur mon post devrait fonctionner!!

Willi m'a parlé de FindWindow et de Handle, j'ai recherché sur les forums mais j'arrive pas à trouver la signification de Handle (je pense comprendre que c la reconnaissance de la fênetre d'une application) et surtout je ne vois comment je l'utiliser ds mon code!!

je commence à désespèrer

Achi!
0
Rejoignez-nous