benjamin3322
Messages postés11Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention17 décembre 2011
-
6 janv. 2011 à 01:28
benjamin3322
Messages postés11Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention17 décembre 2011
-
7 janv. 2011 à 20:16
Salut, j'ai fait un petit programme pour passer le temps et qui à l'arrêt de windows me prévient que mon disque externe et/ou clé usb est branché ... et en principe bloque l'arrêt de windows pour que je puisse éjecter le/les disque(s) ...
mon code fonctionne car il m'affiche le msgbox "test"
Private Const WM_QUERYENDSESSION As Integer = &H11
Private arretwin As Boolean = False
Protected Overrides Sub WndProc(ByRef sw As System.Windows.Forms.Message)
If sw.Msg = WM_QUERYENDSESSION Then
arretwin = True
''Threading.Thread.Sleep(50000) => ne fonctionne pas
Process.Start("shutdown", "-a") 'il y un msgbox avec une erreur qui s'affiche mais le système s'éteint en 2 sec
detection_diskdisk.Start()
msgbox("test") ' pas le temps de cliquer sur ok ...
Else
MyBase.WndProc(sw)
End If
End Sub
donc il détecte le message "WM_QUERYENDSESSION" mais tout les prossesus sont tués
je suis sous windows 7 et quand je fais des tests ... windows ferme tout en 2 secondes
benjamin3322
Messages postés11Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention17 décembre 2011 6 janv. 2011 à 23:43
Salut, je n'ai toujours pas trouvé de réponse à ma question ... même si j'ai trouvé plusieurs code il ne fonctionne pas chez moi sous windows 7
'-- new
Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Integer
'-- new
Private Const WM_QUERYENDSESSION As Integer = &H11
Private arretwin As Boolean = False
Protected Overrides Sub WndProc(ByRef sw As System.Windows.Forms.Message)
If sw.Msg = WM_QUERYENDSESSION Then
arretwin = True
''Threading.Thread.Sleep(50000) => ne fonctionne pas
'-- new
AbortSystemShutdown("Nom-de-mon-PC")
'-- new
detection_diskdiskdiskdisk.Start()
msgbox("test")
Else
MyBase.WndProc(sw)
End If
End Sub
la fonction "AbortSystemShutdown" permet d'annuler l'opération de fermeture ou de redémarrage en cours d'exécution du système d'exploitation Windows.
mais ne fonctionne pas chez moi ... peut-être que je ne l'utilise pas correctement
lediablo
Messages postés214Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention 2 août 2012 7 janv. 2011 à 11:24
salut
Il faut pour cela insérer ce petit bout de code dans notre classe, ce qui permet de détecter une tentative de fermeture de session et de l'annuler :
'Message Windows QueryEndSession
Private Const WM_QUERYENDSESSION As Integer = &H11
'flag indiquant si la session est en cours de fermeture
Private _systemShutdown As Boolean = False
'Redéfinition de la fonction virtuelle WndProc
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
'Mise dans systemShutdown la présence du message fermeture Windows
If m.Msg = WM_QUERYENDSESSION Then
_systemShutdown = True
End If
MyBase.WndProc(m)
End Sub
'Handler evenement closing
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
'Si le message fermeture Windows a été envoyé, on l'annule !
If _systemShutdown Then
e.Cancel = True
_systemShutdown = False
MessageBox.Show("Fermeture de session windows annulée")
End If
End Sub
Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
benjamin3322
Messages postés11Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention17 décembre 2011 7 janv. 2011 à 20:16
Salut lediablo, ton code fonctionne car j'ai le message "Fermeture de session windows annulée" c'est super
car j'ai eu le temps de cliquer sur "ok" mais après windows s'éteint , je test sur windows Xp
Test xp: le système ne s'éteint pas mais le problème c'est que j'ai windows 7
c'est peut-être pas possible sous windows 7
je garde le code pour une version "XP" de mon programmes