begin process at 2008 07 04 00:55:05
1 204 456 membres
3 nouveaux aujourd'hui
14 114 membres club

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 146

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.
23 novembre 2005 20:29:06 :
Ajout des mots clés
03 mars 2008 10:04:46 :
Optimisation par Renfield
  • 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

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS