Arret de windows

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Arret de windows

Message par Dorian »

Bonjour

Je cherche le moyen de savoir comment faire pour qu'un programme détecte l'extinction de windows.

J'ai cherché mais j'ai pas trouvé de source ni de piste pour le faire.

Si quelqu'un sait comment faire, sa m'interesse.

Merci d'avance
Gratteur
Messages : 147
Inscription : ven. 22/avr./2005 23:02

Message par Gratteur »

En adaptant ce code de Nico par exemple (qu'une courte recherche permet de trouver):

Code : Tout sélectionner

;Attention, ce code va nécessairement fermer vos applications en cours
;même si vous choisissez d'annuler la fermeture de la session ou de Window

;A noter que vous n'avez que quelques secondes pour agir et annuler l'opération.
;Donc cliquez sur NON dès l'affichage de la Boite de Dialogue!

;Il faut lancer ce code puis lancer une fermeture de Window ou un arrêt de window
;une boite de dialogue vous permettra d'annuler cette opération mais il faudra répondre
;au plus vite à l'affichage de cette boite!

;Nico
;Le 15/11/04
;PureBasic 3.92
;Ce code permet de savoir si Window ferme la session en cours ou
;si l'ordinateur va s'éteindre et de prendre des mesures.

#ENDSESSION_LOGOFF = $80000000

Procedure ProcedureCallback(WindowID, Message, wParam, lParam)
  Resultat = #PB_ProcessPureBasicEvents
  Select Message
    Case #WM_QUERYENDSESSION
    Debug "ok"
      ;If  lParam = 0 : End ; Fermeture de Windows
      ;ElseIf lParam | #ENDSESSION_LOGOFF : End ; Fermeture de la session
      ;EndIf
  EndSelect
  ProcedureReturn Resultat
EndProcedure
 
  Enumeration
    #Window
  EndEnumeration

  If OpenWindow(#Window,0,0,400,400,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Pure Basic")
   
    SetWindowCallback(@ProcedureCallback())

    Repeat
      EventID.l=WaitWindowEvent()
      Select EventID
        Case #WM_CLOSE
          Quit=1
      EndSelect
    Until Quit=1
  EndIf      
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Merci pour ta réponse mais le problème est que je ne comprend pas vraiment ce code.

Fonctionne-t-il sur XP/2000/NT/Me/98/95 ?

Comment savoir s'il marche ?

Y a-t-il possibilité de tester le changement de session ?

Désolé pour ces questions betes. :oops:
Gratteur
Messages : 147
Inscription : ven. 22/avr./2005 23:02

Message par Gratteur »

Ta question n'est pas bête du tout, il faut bien s'interresser aux sessions windows un jours ou l'autre pour finioler nos petits programmes ^^.

Je viens de tester le code sous XP et il fonctionne très bien.
Pour tester "changer d'utilisateur", je te renvois à ce rapport de bug que j'ai posté il y a quelque temps :
Malheureusement personne ne veux y répondre, tu vas devoir faire comme moi et le surveiller tous les jours jusqu'a ce que Fred ou une ame généreuse décide de répondre :cry:

Le code est simple, il faut juste comprendre le fonctionnement des fonctions de l'api (se sont juste des fonctions en plus) et des callback (il y a de bons exemples sur ce forum et sur 2dev). Les constantes comme #WM_QUERYENDSESSION ne sont en fait que le résultat de messages fournits par windows (en tout cas c'est ce que j'ai compris en bon amateur).
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Ok merci pour ta réponse.

Je vais tenter de comprendre les callback :?:
Répondre