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és84Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention17 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és84Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention17 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és51Date d'inscriptionmardi 28 juin 2005StatutMembreDernière intervention29 mars 2008 14 nov. 2005 à 18:36
tente**
cs_mti
Messages postés51Date d'inscriptionmardi 28 juin 2005StatutMembreDernière intervention29 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és84Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention17 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és29Date d'inscriptiondimanche 1 février 2004StatutMembreDerniè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és115Date d'inscriptionjeudi 11 octobre 2001StatutMembreDernière intervention15 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és115Date d'inscriptionjeudi 11 octobre 2001StatutMembreDernière intervention15 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és115Date d'inscriptionjeudi 11 octobre 2001StatutMembreDernière intervention15 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és29Date d'inscriptiondimanche 1 février 2004StatutMembreDerniè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és29Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 1 juin 2005 11 mai 2005 à 08:41
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 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és103Date d'inscriptionlundi 8 juillet 2002StatutMembreDernière intervention24 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és939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 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...
13 sept. 2006 à 14:54
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
15 nov. 2005 à 09:31
Bonne prog
15 nov. 2005 à 09:29
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
14 nov. 2005 à 18:36
14 nov. 2005 à 18:35
7 nov. 2005 à 17:06
ca marche pas ? (ou j'ai pas compris le but du code)
16 mai 2005 à 18:41
14 mai 2005 à 17:44
'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
14 mai 2005 à 17:29
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
14 mai 2005 à 16:48
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
11 mai 2005 à 15:18
j'aimerais faire la meme chose mais pour le bouton maximiser comment est-ce possible ?
11 mai 2005 à 08:41
29 oct. 2004 à 22:24
6 nov. 2003 à 22:58
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.
6 nov. 2003 à 18:40
6 nov. 2003 à 09:37