Computer Runterfahren / Benutzer Abmelden Meldung

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von Bisonte »

Hallo...

Eine Freundin bat mich, ihren Rechner für ihre 2 Kinder (10,11 Jahre) mit einer Zeitkontrolle zu versehen.
(Jedes Kind hat 2h "Computerzeit")

Jedes Kind hat ein eigenes Benutzerkonto. Alles soweit kein Problem. Ich lasse mein Programm per Autostart starten,
frage den Benutzernamen ab und die Zeit läuft. Wenn die Zeit abgelaufen ist, Wird das Konto einfach abgemeldet.

Das Problem ist nun, wenn ein Kiddie sein Benutzerkonto früher abmeldet... sagen wir mal nach einer Stunde...
Wie kriegt mein Programm das mit, das da eine Abmeldung abläuft, damit ich die noch verbleibende Zeit irgendwie
Speichern kann (als File oder in Registry) ?

Edit :

Eine Speicherung alle x Minuten wollte ich umgehen...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von Bisonte »

Das sieht interessant aus, aber wie wende ich das an ?

Die Sache mit den Window Callbacks hab ich noch nie wirklich gerafft ....

Code: Alles auswählen

Procedure WinCallback(hWnd, uMsg, wParam, lParam) 
  
  If uMSG = #WM_QUERYENDSESSION
    SaveFile()
  EndIf
    
EndProcedure
; und nach Openwindow

SetWindowCallback(@WinCallback())
In etwa so ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von ts-soft »

Code: Alles auswählen

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Protected Result = #PB_ProcessPureBasicEvents
  
  If uMSG = #WM_QUERYENDSESSION
    SaveFile()
    ProcedureReturn #True
  EndIf
  ProcedureReturn Result
EndProcedure
; und nach Openwindow

SetWindowCallback(@WinCallback())
In lParam kannste noch abfragen ob Abmeldung usw.
SaveFile() darf nicht lange dauern!

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von HeX0R »

Das ProcedureReturn #True kannst du dir theoretisch sparen, darum dürfte sich PB kümmern.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von Bisonte »

Max. 5 Sekunden, wenn ich das richtig verstanden habe...

Aber ein Openpreferences() und speichern von 2 Variablen sollte keine 5 Sekunden dauern ;)

Danke für diese Erleuchtung !

Edit: @Hex0r : Naja aber man will ja schön MS-Regeln einhalten.... /:->
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von edel »

Du haeltst dich damit sehr wohl an die "Regeln" :
By default, the DefWindowProc function returns TRUE for this message.
Die Zeit die Windows ein Programm machen laesst, ist nicht uberall gleich, die kann man auch selber einstellen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von ts-soft »

ProcedureReturn #True ist wirklich überflüssig, aber schaden kann es auch nicht <)

Wenn jemand schnelles Herunterfahren unter XP enabled hat, wird es knapp mit Speichern,
aber bei Default-Werten gibt es keine Probleme.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von Bisonte »

Soll unter Win7 laufen ... und dort ist es nur das Abmelden des Kiddieaccounts,
kein komplettes runterfahren. Defaultwerte sind da auch noch drin,
sollte von daher klappen.
Aber ich glaube ich sollte das Abmelden nicht mit #EWX_LOGOFF | #EWX_FORCE machen...
sonst geht der doch sofort raus oder seh ich das Falsch ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Computer Runterfahren / Benutzer Abmelden Meldung

Beitrag von ts-soft »

Auf #EWX_FORCE solltest Du verzichten, das kann zur Folge haben, das gar kein #WM_QUERYENDSESSION gesendet wird.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten