DÉSACTIVER LA CROIX SYSTÈME SOUS VB.NET

hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 - 6 nov. 2003 à 09:37
cs_et1 Messages postés 250 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 27 janvier 2011 - 13 sept. 2006 à 14:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17721-desactiver-la-croix-systeme-sous-vb-net

cs_et1 Messages postés 250 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 27 janvier 2011 10
13 sept. 2006 à 14:54
http://www.codyx.org/snippet_desactiver-croix-fermeture-forme_24.aspx

Langage : VB.NET 1.x , VB 2005
Date ajout : 24/03/2006
Posté par sebmafate


Public Class Form1
Private Const CS_NOCLOSE As Integer = &H200
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ClassStyle = cp.ClassStyle Or CS_NOCLOSE
Return cp
End Get
End Property
End Class



www.et1-vb.net
psycho81 Messages postés 84 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 17 février 2008
15 nov. 2005 à 09:31
ir ton système d'exploitation ou quelque chose qui puisse m'aiguiller ? Je ne comprends pas ce que viens faire ce problème de sécurité :/

Bonne prog
psycho81 Messages postés 84 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 17 février 2008
15 nov. 2005 à 09:29
MTI,
chez moi ca marche (et sur tous les PC testé W2000 et XP)

voici le code testé :

Private Sub Frm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
e.Cancel = True
Me.Visible = False
End Sub

Et je n'ai rencontré aucun message d'erreur ! Et je fais cette procédure assez courament (pour eviter de détruire des feuille que je passe alors non visible)

Si tu rencontre un pb avec ce code, pourra tu me fourn
cs_mti Messages postés 51 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 29 mars 2008
14 nov. 2005 à 18:36
tente**
cs_mti Messages postés 51 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 29 mars 2008
14 nov. 2005 à 18:35
Super moi j'ai un beau message de Microsoft.net framework qui me dit que ton prog tenete de créer une exception de sécurité et me demande si je veux continuer!!
psycho81 Messages postés 84 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 17 février 2008
7 nov. 2005 à 17:06
ret si sur le Close du form on met e.cancel = true ?
ca marche pas ? (ou j'ai pas compris le but du code)
cs_shadowmoon Messages postés 29 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 1 juin 2005
16 mai 2005 à 18:41
merci pour ton aide, mias j'ai trouvé un truc beaucoup plus simple sur le forum de develloppez.com, tu verra y'a un poste de moi.
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
14 mai 2005 à 17:44
dernière modif pour l'utilisation avec un bouton pour autoriser ou non de bouger la form :
'Ajout d'un 4ème bouton bouton4.text="Activer"
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
If sender.text = "Activer" Then
sender.text = "Désactiver"
Else
sender.text = "Activer"
End If
End Sub

'Empêche de bouger la form *********
Protected Overrides Sub WndProc(ByRef m As Message)
Const WM_NCLBUTTONDOWN As Integer = 161
Const WM_SYSCOMMAND As Integer = 274
Const HTCAPTION As Integer = 2
Const SC_MOVE As Integer = 61456
If Button4.Text = "Désactiver" Then
If (m.Msg WM_SYSCOMMAND) AndAlso (m.WParam.ToInt32() SC_MOVE) Then
Return
End If
If (m.Msg WM_NCLBUTTONDOWN) AndAlso (m.WParam.ToInt32() HTCAPTION) Then
Return
End If
End If
MyBase.WndProc(m)
End Sub
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
14 mai 2005 à 17:29
petite correction il faut aussi modifier une autre valeur pour ne pas pouvoir augmenter ou diminuer la form :
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If sender.text = "Désactiver" Then
Me.MinimizeBox = False
Me.MaximizeBox = False
Me.FormBorderStyle = FormBorderStyle.FixedSingle
sender.text = "Activer"
Else
Me.MinimizeBox = True
Me.MaximizeBox = True
Me.FormBorderStyle = FormBorderStyle.Sizable
sender.text = "Désactiver"
End If
End Sub

Si ont veut bloquer la form à l'écran (ne bouge plus !?)

'Empêche de bouger la form *********
Protected Overrides Sub WndProc(ByRef m As Message)
Const WM_NCLBUTTONDOWN As Integer = 161
Const WM_SYSCOMMAND As Integer = 274
Const HTCAPTION As Integer = 2
Const SC_MOVE As Integer = 61456
If (m.Msg WM_SYSCOMMAND) AndAlso (m.WParam.ToInt32() SC_MOVE) Then
Return
End If
If (m.Msg WM_NCLBUTTONDOWN) AndAlso (m.WParam.ToInt32() HTCAPTION) Then
Return
End If
MyBase.WndProc(m)
End Sub
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
14 mai 2005 à 16:48
C'est très simple mais fait disparaitre le ou les boutons mais ça fonctionne :

pour les 2 boutons (Maximiser,Minimiser)
'Créer un nouveau bouton !!
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If sender.text = "Désactiver" Then
Me.MinimizeBox = False
Me.MaximizeBox = False
sender.text = "Activer"
Else
Me.MinimizeBox = True
Me.MaximizeBox = True
sender.text = "Désactiver"
End If
End Sub
cs_shadowmoon Messages postés 29 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 1 juin 2005
11 mai 2005 à 15:18
c encore moi.

j'aimerais faire la meme chose mais pour le bouton maximiser comment est-ce possible ?
cs_shadowmoon Messages postés 29 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 1 juin 2005
11 mai 2005 à 08:41
merci à toi c tout à fait ce qu'il me fallait.
Utilisateur anonyme
29 oct. 2004 à 22:24
Je trouve que sous vb c t plus simple
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
6 nov. 2003 à 22:58
Pour que cela marche, j'ai mis les fonction de l'API et les CONST dans un module comme en VB.

Public Declare Function GetMenuItemCount Lib "user32" (ByVal _
hMenu As Long) As Integer
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As _
Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) _
As Integer
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As _
Integer, ByVal bRevert As Boolean) As Integer
Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&

La suite de la Sub new dans une classe DisableCroix

Public Class DisableCroix
Public Sub New(ByVal hwnd As Integer, ByVal sText As String, _
ByVal IDMenu As Short)
Dim hSysMenu As Integer
Dim nCount As Integer

'*/ Pour désactiver la croix system-----------
hSysMenu = GetSystemMenu(hwnd, False)
nCount = GetMenuItemCount(hSysMenu)
RemoveMenu(hSysMenu, nCount - 1, MF_REMOVE Or
MF_BYPOSITION)
RemoveMenu(hSysMenu, nCount - 2, MF_REMOVE Or
MF_BYPOSITION)
End Sub
End Class

Dans le Load de la form
Private DisCroix As DisableCroix
DisCroix = New DisableCroix(Me.Handle.ToInt32, "", 0)

Et cela marche VN.NET 2003. Merci de ton aide je n'ai eu qu'à répartie le code.
Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005
6 nov. 2003 à 18:40
Peut être que ce serait plus simple de faire un méthode Shared au lieu de créer une instance de la classe à la fois, genre DisableCroix.Disable(hWnd as IntPtr, sText as String, idMenu as Short)
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
6 nov. 2003 à 09:37
rah dommage que j'ai pas vb.net au taf... je suis presque sur qu'il y a une proprieté de l'objet form qui fait ça (en une ligne donc, et sans utiliser l'api), si personne ne te la donne dans la journée, je posterais ça ce soir ici...
Rejoignez-nous