AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi PowerButton-Event von Windows abfangen und auswerten
Thema durchsuchen
Ansicht
Themen-Optionen

PowerButton-Event von Windows abfangen und auswerten

Ein Thema von rakekniven · begonnen am 28. Jul 2009 · letzter Beitrag vom 29. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

Re: PowerButton-Event von Windows abfangen und auswerten

  Alt 28. Jul 2009, 21:58
Wenn die Powertaste abgestellt wurde, dann wird doch auch keine WM_POWERBROADCAST-Botschaft verschickt, da dann ja nichts passiert.

WM_POWERBROADCAST ist nur eine Reaktion auf das Drücken des Tasters oder auf irgendwas, welches den PC z.B. runterfahren will ... diese Nachricht hat also nix mit der Taste selber zu tun.

Das drücken des Gehäuse-Power-Knöpfchens dürfte eher irgendeinen Interupt auslösen und an den kommt man wohl nur über einen Treiber?
$2B or not $2B
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#12

Re: PowerButton-Event von Windows abfangen und auswerten

  Alt 29. Jul 2009, 06:56
...oder man fragt den Embedded Controller direkt ab - das Byte ist aber bei jedem PC/Notebook an einer anderen Stelle, denn es gibt keine Normung.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

Re: PowerButton-Event von Windows abfangen und auswerten

  Alt 29. Jul 2009, 08:20
Zitat von hathor:
...oder man fragt den Embedded Controller direkt ab - das Byte ist aber bei jedem PC/Notebook an einer anderen Stelle, denn es gibt keine Normung.
irgendwer muß ja wissen wo es liegt ... das BIOS vielleicht/vermutlich?
$2B or not $2B
  Mit Zitat antworten Zitat
rakekniven

Registriert seit: 4. Apr 2008
Ort: Franken
82 Beiträge
 
Delphi XE5 Professional
 
#14

Re: PowerButton-Event von Windows abfangen und auswerten

  Alt 29. Jul 2009, 08:28
Zitat von Luckie:
Zitat von rakekniven:
Unser Fenster läuft Fullscreen ohne Border und Icons. Ist es dann noch ein Toplevel-Fenster?
Ja, dann ist es ein Toplevel Fenster.
Bei meiner Recherche habe ich den Begriff "toplevel" gefunden und dass nur solche Anwendungen Windows-Messages wie WM_POWERBROASCAST empfangen können. Mein Testprogramm ist Form1.Align:=alClient und Form1.BorderIcons:=[].
Darauf habe ich einen Test-Button der die Message sendet. Darauf reagiert meine Prozedur

Delphi-Quellcode:
procedure WMPowerBroadcast(var Msg:TWMPower);
  message WM_POWERBROADCAST;


procedure TForm1.WMPowerBroadcast(var Msg:TWMPower);
begin
  Msg.Result:=BROADCAST_QUERY_DENY;
  ShowMessage('procedure TForm1.WMPowerBroadcast(var Msg:TWMPower);');
end;
wenn ich den Test-Button im Programm drücke, aber nicht wenn ich den PowerButton drücke und auch nicht, wenn ich den "Ausschalten"-Button drücke, der auf Start > Computer ausschalten... erscheint (wie weiter oben jmd schrieb).



Eine andere Empfangs-Prozedur, die ich in meiner Nachforschung entdeckt habe ist:

Delphi-Quellcode:
procedure wndproc(var msg:Tmessage);
begin
  inherited;
  if msg.msg = WM_POWERBROADCAST then
  begin
    ShowMessage('procedure wndproc(var msg:Tmessage);');
    msg.result:=BROADCAST_QUER_DENY;
  end;
end;
Diese wird beim manuellen senden der Message gar nicht erst aufgerufen. Verwende ich WndProc falsch oder überschreibe ich sie nicht richtig?



Zitat von himitsu:
Wenn die Powertaste abgestellt wurde, dann wird doch auch keine WM_POWERBROADCAST-Botschaft verschickt, da dann ja nichts passiert.

WM_POWERBROADCAST ist nur eine Reaktion auf das Drücken des Tasters oder auf irgendwas, welches den PC z.B. runterfahren will ... diese Nachricht hat also nix mit der Taste selber zu tun.

Das drücken des Gehäuse-Power-Knöpfchens dürfte eher irgendeinen Interupt auslösen und an den kommt man wohl nur über einen Treiber?
Auf dem Delphi-PC habe ich die Taste so eingestellt, dass das Auswahl-Menü erscheint, damit ich merke, ob die Taste reagiert hat. Diese Einstellung ist im Grund aber egal, da auf den Druck der Taste reagiert werden soll und nicht auf eines der möglichen Events.
Wie weiter oben in diesem Post genauer beschrieben, reagiert das Programm aber auch nicht, wenn ich auf "Ausschalten" gehen und somit, laut deiner Aussage, das WM_POWERBROADCAST-Event auslöse.


Zitat von hathor:
...oder man fragt den Embedded Controller direkt ab - das Byte ist aber bei jedem PC/Notebook an einer anderen Stelle, denn es gibt keine Normung.
Zitat von himitsu:
Zitat von hathor:
...oder man fragt den Embedded Controller direkt ab - das Byte ist aber bei jedem PC/Notebook an einer anderen Stelle, denn es gibt keine Normung.
irgendwer muß ja wissen wo es liegt ... das BIOS vielleicht/vermutlich?
Der Power-Taster ist direkt auf das Netzteil verdrahtet (lt. unserem PC-Hersteller). Und das Netzteil ist mit dem Mainboard verbunden. Welcher Chip/Bus das ist, wissen wir nicht genau, aber Windows bekommt es ja mit.

Es gibt eine Message, laut meinen Recherchen-Quellen ist es WM_POWERBROADCAST, was auch schon in einem älteren Thread im Forum (erfolgreich?) in einem ähnlichen Zusammenhang verwendet wurde.

edit:
Dieser Thread ist es: http://www.delphipraxis.net/internal...ht=powerbutton
Frag google
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:14 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