AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Windows Re-Login/Hibernate/Screensaver Ende - welches Ereignis muss man überwachen?

Windows Re-Login/Hibernate/Screensaver Ende - welches Ereignis muss man überwachen?

Ein Thema von KodeZwerg · begonnen am 12. Jun 2018 · letzter Beitrag vom 12. Jun 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#1

Windows Re-Login/Hibernate/Screensaver Ende - welches Ereignis muss man überwachen?

  Alt 12. Jun 2018, 07:21
Guten Morgen,
ich versuche herauszufinden auf welches Ereignis ich warten muss bzw falls es mehrere sind welche wären das?

Ich möchte dieses Zeitpunkt erfassen:
User meldet sich ab und wieder an, sobald/nachdem Dektop erscheint, das Ereignis benötige ich.
System schläft und wird aufgeweckt, sobald/nachdem Dektop erscheint, das Ereignis benötige ich.
System ist im Screensaver und man bewegt die Maus (oder tippt was), sobald/nachdem Dektop erscheint, das Ereignis benötige ich.
(Falls ich was vergessen haben sollte, bitte Ergänzen, Danke!)

Im Grunde braucht mein Programm nur drei Zustände kennen, System arbeitet, System pausiert und System ist zurück.
Das letztere benötige ich.

Was ich erreichen will ist folgendes, was mich auch schon längere Zeit nervt, man hat mehrere Fenster offen und schön positioniert, Multi-Monitor weit, nun schläft System ein oder Screensaver oder Aus- & Einloggen, sowie Desktop wieder erscheint, sind viele Fenster nicht mehr da wo sie waren und teilweise auch mit einer völlig anderen Größe.

Was ich bereits habe ist eine ListView die mir den Status von jedem Fenster zeigt (Fenster Name, Fenster Position, Fenster Dimension, Fenster Status minimized/normal/maximized, Alpha Phase für TrayIcons ist in arbeit und das wichtigste auf welchem Monitor das Fenster plaziert ist)

Was mir fehlt ist ein Ereignis wo ich diese gesammelten Daten an die Fenster zurückgebe so das alles ausschaut wie vor der System-Pause.

Hat da jemand einen Vorschlag für mich?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#2

AW: Windows Re-Login/Hibernate/Screensaver Ende - welches Ereignis muss man überwache

  Alt 12. Jun 2018, 10:35
Hmm..

Eine Möglichkeit würde Wtsapi32.dll mit RegisterSessionNotification sein.
Ob es anders Windows-Messages gibt... Weiß nicht.

Mit dieser ist es möglich Events zu bekommen u.A. für WTS_SESSION_LOCK/WTS_SESSION_UNLOCK des ScreenSavers.

Als Dienst (laufend als LocalSystem) kannst Du diese sogar benutzen, um bei WinLogon (Windows Anmeldung) in der Session des gerade angemeldeten User eine Applikation zu starten.

Denke ein ähnliches verfahren nutzen VirenScanner, um die GUI zu starten.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Windows Re-Login/Hibernate/Screensaver Ende - welches Ereignis muss man überwache

  Alt 12. Jun 2018, 15:54
Ruhezustand und Standby kann man mit diesen Messages abdecken:
Code:
PBT_APMRESUMESUSPEND = 0x0007
PBT_APMRESUMESTANDBY = 0x0008
PBT_APMSUSPEND       = 0x0004
PBT_APMSTANDBY       = 0x0005
PBT_APMRESUMECRITICAL
PBT_APMRESUMEAUTOMATIC
Alles, was RESUME enthält, ist für das Aufwachen. Der Bildschirmschoner sollte keinen Einfluss auf die Größe und Position von Fenstern haben.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Windows Re-Login/Hibernate/Screensaver Ende - welches Ereignis muss man überwache

  Alt 12. Jun 2018, 17:24
Vielen vielen Dank für den Input, ich werde mich gleich mal ran machen und es umzusetzen, Dankeschön!

Zitat:
Der Bildschirmschoner sollte keinen Einfluss auf die Größe und Position von Fenstern haben.
Jain, wenn der doof programmiert ist und die Auflösung ändert, beim beenden auch wieder zurücksetzt, da ist es bereits passiert. Oder liegts an Windows selbst, ich weiß es nicht ich kenne leider nur das Resultat.
Gruß vom KodeZwerg

Geändert von KodeZwerg (12. Jun 2018 um 17:28 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz