Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

API POUR DÉGRISER LA CROIX FERMER DE N'IMPORTE QUELLE FENÊTRE (LA RÉACTIVER EN FAIT) / ET PUIS AUSSI POUR LA GRISER


Information sur la source

Catégorie :API Classé sous : dégriser, griser, fermer, croix, fenetres Niveau : Initié Date de création : 06/02/2004 Date de mise à jour : 03/03/2008 10:04:46 Vu : 5 727

Note :
7,5 / 10 - par 6 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note


Description

J'avais trouvé pas mal de sources pour griser la croix fermer mais aucune pour la dégriser. Donc j'ai essayé pas mal de combinaisons (bien 50 au moins) avec différentes API et puis ça a enfin marché ! Ouf ! (en plus avec un truc tout con j'avai les boules lol)

donc moi j'ai testé sur les fenêtres que j'avai grisé auparavant, ça marche et puis aussi sur Nero en pleine gravure, et ça marche aussi !
Donc dites moi si chez vous ça marche pas mais normalement aucun problème.

MadMatt
 

Source

  • ' Je met un petit exemple avant (tout con mais bon) :
  • Private Sub form_load ()
  • DesactiveCroix Me.Hwnd ' Désactive la croix de la fenêtre actuelle
  • ActiveCroix Me.Hwnd ' Réactive
  • ' Je précise qu'il faut envoyer dans la fonction le handle de la fenêtre à manipuler.
  • ' Pour trouver le handle d'une form d'un projet Visual Basic il faut utiliser ".Hwnd" après le nom de la form
  • End Sub
  • ' METTEZ TOUT çA DANS UN MODULE ET UTILISEZ LES FONCTIONS
  • ' Déclare les API
  • ' pour dégriser ou griser un item du menu sytème d'une fenêtre
  • Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
  • Public Declare Function GetSystemMenu Lib "user32" (ByVal HWnd As Long, ByVal bRevert As Long) As Long
  • Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
  • Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
  • Public Declare Function DrawMenuBar Lib "user32" (ByVal HWnd As Long) As Long
  • Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
  • Public Const MF_BYPOSITION = &H400&
  • Public Const MF_REMOVE = &H1000&
  • Public Const SC_CLOSE = &HF060
  • ' Fonctions :
  • ' Réactive la croix fermer
  • Public Function ActiveCroix(ByVal HWnd As Long) ' il faut lui préciser le handle de la fenêtre
  • On Error Resume Next
  • ' ici je dégrise grâce à true qui remet le menu à zéro
  • hMenu = GetSystemMenu(HWnd, True)
  • DrawMenuBar HWnd
  • End Function
  • ' Désactive la croix fermer
  • Public Function DesactiveCroix(ByVal HWnd As Long)
  • On Error Resume Next
  • Dim hMenu As Long
  • hMenu = GetSystemMenu(HWnd, 0)
  • RemoveMenu hMenu, SC_CLOSE, MF_BYCOMMAND
  • DrawMenuBar HWnd
  • End Function
' Je met un petit exemple avant (tout con mais bon) :
Private Sub form_load ()
DesactiveCroix Me.Hwnd  ' Désactive la croix de la fenêtre actuelle
ActiveCroix Me.Hwnd       ' Réactive
' Je précise qu'il faut envoyer dans la fonction le handle de la fenêtre à manipuler.
' Pour trouver le handle d'une form d'un projet Visual Basic il faut utiliser ".Hwnd" après le nom de la form
End Sub


' METTEZ TOUT çA DANS UN MODULE ET UTILISEZ LES FONCTIONS
' Déclare les API
' pour dégriser ou griser un item du menu sytème d'une fenêtre
Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Public Declare Function GetSystemMenu Lib "user32" (ByVal HWnd As Long, ByVal bRevert As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Declare Function DrawMenuBar Lib "user32" (ByVal HWnd As Long) As Long
Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
Public Const SC_CLOSE = &HF060


' Fonctions :
' Réactive la croix fermer
Public Function ActiveCroix(ByVal HWnd As Long) ' il faut lui préciser le handle de la fenêtre
    On Error Resume Next
    ' ici je dégrise grâce à true qui remet le menu à zéro
    hMenu = GetSystemMenu(HWnd, True)
    DrawMenuBar HWnd
End Function

' Désactive la croix fermer
Public Function DesactiveCroix(ByVal HWnd As Long)
     On Error Resume Next
     Dim hMenu As Long
     hMenu = GetSystemMenu(HWnd, 0)
     RemoveMenu hMenu, SC_CLOSE, MF_BYCOMMAND
     DrawMenuBar HWnd
End Function

Conclusion

voilà, à vous les commentaires et la note !
;-)

PS : pour la fonction qui désactive la croix elle vient du site mais je l'ai mise pour pouvoir tester chez vous.
 

Historique

23 novembre 2005 20:29:06 :
Ajout des mots clés
03 mars 2008 10:04:46 :
Optimisation par Renfield

Commentaires et avis

signaler à un administrateur
Commentaire de MadM@tt le 06/02/2004 21:17:13

Désolé par contre je m'en rend compte j'ai mis plein d'api en trop :
j'ai essayé plein de combinaison comme je l'ai dit donc il y a toujours les api qui m'avaient servi à faire mes tests

voilà
@ +

signaler à un administrateur
Commentaire de FearBlue le 06/02/2004 23:17:14

Sympa et bien pratique
Je me suis tjrs demandé comment on pouvait faire ca !!!
Aller 7/10

signaler à un administrateur
Commentaire de ld40 le 07/02/2004 23:48:11

t'aurais pas la même chose pour les boutons réduire et restaurer?

;-)

signaler à un administrateur
Commentaire de MadM@tt le 08/02/2004 21:38:20

Salut,
pour Id40 je pense que peut être il réactive tous les boutons en fait, faudrait tester. c'est vrai que c'est à voir.

Sinon merci FearBlue ;-)

@ +

signaler à un administrateur
Commentaire de windob le 10/02/2004 23:30:28

tres bon code mais on ne peu pas griser ou degriser une fenetre d'une autre appli ?

signaler à un administrateur
Commentaire de MadM@tt le 11/02/2004 23:26:58

Bah bien sur que si c'est justement ça l'intérêt !
Dans la fonction tu lui envoie le handle de la fenêtre à cacher donc si tu veut dégriser la croix de la fenêtre d'une autre appli il faut récupérer son handle et l'envoyer dans la fonction.
Je l'ai dit en haut j'ai testé avec Nero en pleine gravure et ça a marché.

Après c'est sur fo faire tout le code pour récupérer le handle de la fenêtre sur laquelle tu veut agir, mais bon...
;-)

signaler à un administrateur
Commentaire de windob le 11/02/2004 23:29:28

heu....

juste comme ça c'est quoi le handle ???

signaler à un administrateur
Commentaire de jannoman le 16/02/2004 07:59:43

le handle : c'est un numéro unique que Windows attribue à chaque objet pour les identifier. Tu peux le récupérer par plusieurs manières et il y a un bon ex sur le site (cf http://www.vbfrance.com/article.aspx?ID=8815)

signaler à un administrateur
Commentaire de MadM@tt le 21/02/2004 17:52:13

et pis une fois que t'a le handle de ce que tu veu (fenêtre, menu de fenêtre, bouton, picturebox...) tu peut faire plein de trucs sur ton objet... cool non ?

signaler à un administrateur
Commentaire de adamo901 le 29/12/2005 14:04:56

Même question que LD40
Y aurait-il pas la même chose pour les boutons réduire et restaurer?

;-)

signaler à un administrateur
Commentaire de MadM@tt le 29/12/2005 16:57:15

Euh je dis ça de mémoire, mais dans les propriétés d'une form y'a pas des options pour activer/desactiver les boutosn réduire et restaurer ?
(PS : ça fai bien longtemps que je n'ai pas vu d'IDE VB donc m'en voulez pas si je me trompe ;)

signaler à un administrateur
Commentaire de adamo901 le 30/12/2005 10:19:28

C'est bon.
J'ai utilisé ton code sans mon application en cherchant toujours la solution pour les boutons réduire et restaurer.

Je te note 7/10
Bon courage!
;)

signaler à un administrateur
Commentaire de soldier8514 le 01/07/2006 19:20:35

ouai c klr _ tu déclares 6 fonctions et t'en utilises 3 ...

ormis çà c un code très utile _ de plus c compatible à partir de windows 3.1 _ bravo à toi _ 10/10

signaler à un administrateur
Commentaire de MadM@tt le 01/07/2006 23:56:01

Merci, c'est vrai qu'il y a des déclarations en trop, mais bon je compte sur vous le code fait à peine 20 lignes elles sont pas difficiles à supprimer lol ;-) (rahhh la flème quel fléau, j'arrive pas à m'en défaire...)

signaler à un administrateur
Commentaire de yyyx le 12/11/2006 16:30:35

Bonjours,
Existe-t-il un code permettant non pas de griser la croix mais carrément de la faire disparaitre ??

signaler à un administrateur
Commentaire de MadM@tt le 12/11/2006 16:33:24

La faire disparaitre ??? oula la je ne crois pas, je n'ai jamais vu quelque chose de tel en tout cas. Enfin c'est peut etre possible mais je n'ai aucune idée

signaler à un administrateur
Commentaire de ld40 le 12/11/2006 20:58:53

il y a cette astuve vba que je n'ai pas testée
http://www.codyx.org/snippet_supprimer-croix-userform-vba_257.aspx

signaler à un administrateur
Commentaire de ld40 le 14/03/2007 21:34:03

bonjour,

concernant les boutons reduire et maximiser, je viens enfin de trouver mon bonheur en vba...

http://www.mrexcel.com/archive2/59900/69386.htm

signaler à un administrateur
Commentaire de djgab21 le 02/03/2008 12:22:04 9/10

Bonjour;
Bon code MadM@TT Bravo 9/10

signaler à un administrateur
Commentaire de Renfield le 03/03/2008 09:11:04 administrateur CS

à ne pas faire sous cette forme...
RIEN ici ne te permet d'être sûr que tu as bien attaqué le bouton Fermer.

Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)

tu supprime le dernier élément de la liste... ok, mais on y met ce que l'on veut, dans ce menu, chez nVidia, par exemple, ils ajoutent des 'TomMost', etc.

Dim hMenu As Long
    hMenu = GetSystemMenu(Me.hWnd, 0)
    RemoveMenu hMenu, SC_CLOSE, MF_BYCOMMAND

signaler à un administrateur
Commentaire de Renfield le 03/03/2008 09:11:31 administrateur CS

*TopMost

signaler à un administrateur
Commentaire de MadM@tt le 03/03/2008 10:06:23

Tout à fait, c'était un peu hasardeux comme code je me rend compte.
Maintenant c'est plus propre
(en fait la fonction qui grise le menu je l'avais récupéré ailleurs, histoire de pouvoir tester celle qui dégrise)
Ah le VB... ça me manque :(

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Gestion de la croix pour fermer une macro VBA [ par zgueg ] Je bosse actuellement sur une macro VBA sousBusiness Object 5.Mon appli plante losque je clique sur "la croix".J'aimerais donc savoir comment gerer ce fermer la croix d'un user et aller sur une page bien précise [ par yannch ] Bonjour, Mon user form est composé de combo box dont les données se copie sur une feuille A.Si je commence a saisir et qu'en plein milieu je veuille Fermer toutes les fenetres d'internet explorer [ par z980x ] Salut ! Je voudrais savoir comment fermer TOUTES les fenetres d'internet Explorer, sans savoir leur handle...Est-il possible de killer le processus IE Enlever la croix d'une boite de dialogue [ par jerome1983 ] Bonjour a tous,Je voudrai savoir s'il est possible d'enlever la croix pour fermer en haut a droite de la boite de dialogue.Car comme jai un bouton fer fermer correcte l'application avec la croix [ par nakano78 ] une question simple mais que je ne sais pas faire...Lorsque je quitte mon application par la croix.... le processus reste... donc ma question est simp fermer mon prg d'un seul coup [ par jeanlucsl ] salut a tousmon pb est le suivant: lorsque je clique sur la croix de windows pour fermer mon pgr, en fait il ne me ferme que la fenêtre presente Empêcher à un utilisateur de cliquer sur la croix d'un formulaire [ par syl2 ] Bonjour à tous,je suis en train de réaliser des formulaires sous Access, et j'essaye d'implémenter un code pour empêcher l'utilisateur de fermer mon f Fermer l'application Excel avec la croix d'une userform [ par pilou30 ] Bonjour,je me lance juste dans la programmation de macro, userbox ...... dans Excel. Grâce à l'aide et à internet, j'ai réussi pas [VB6] Problème avec la croix pour fermer une application [ par NeT_SlipKnoT ] Bonjour,j'ai un problème au niveau de mon programme VB. Mon projet est constitué de plusieurs forms dont 1 qui est le form principal (le men [vb.net] Fermer avec croix rouge Windows [ par Nexto ] Rebonsoir,   Je voudrais savoir comment je peux mettre une instruction quand on clique sur la croix rouge en haut à gauche Windows


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.