AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ruhezustand blockieren-> Versuch erkennen -> selbst auslösen
Thema durchsuchen
Ansicht
Themen-Optionen

Ruhezustand blockieren-> Versuch erkennen -> selbst auslösen

Ein Thema von ichbins · begonnen am 11. Mär 2006 · letzter Beitrag vom 15. Mai 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 10. Apr 2006, 08:45
Da steht aber:
Zitat von msdn:
An application should process this event as quickly as possible
und
Zitat von msdn:
The system allows approximately 20 seconds
Das ist für mich keine genaue Aussage. Zudem gibt es einen Registry-Eintrag, mit dem man die Wartezeit reduzieren bzw. sogar auf Null setzen kann.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#12

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 10. Apr 2006, 08:56
Zitat von Union:
Da steht aber:
Zitat von msdn:
An application should process this event as quickly as possible
und
Zitat von msdn:
The system allows approximately 20 seconds
Das ist für mich keine genaue Aussage. Zudem gibt es einen Registry-Eintrag, mit dem man die Wartezeit reduzieren bzw. sogar auf Null setzen kann.
Auf NULL? Da kann ja noch nichtmal ein Treiber reagieren.

Und anscheinend ist für Microsoft "As quickly as possible" = "The system allows approximately 20 seconds"
Und das "verstecken" der Daten sollte allerdings sicher nicht mehr als eine, max. zwei Sekunden dauern.

Ich kann aus meiner Erfahrung jedenfalls sagen, dass die Zeit ausreicht noch Daten an einen Server zu schicken und auf Antwort zu warten.


Aber das sollte ichbins selber entscheiden wie er es machen will.
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 10. Apr 2006, 08:57
Zitat von Union:
Zudem gibt es einen Registry-Eintrag, mit dem man die Wartezeit reduzieren bzw. sogar auf Null setzen kann.
Wo ist das Problem - dann muss eben das Programm den Registry-Eintrag checken und bei Bedarf anpassen - allerdings nach Programmbeendigung auch wieder auf den Ursprungseintrag zurücksetzen, damit's keinen Ärger mit dem User gibt.
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 10. Apr 2006, 09:32
Zitat von hitzi:
Wo ist das Problem - dann muss eben das Programm den Registry-Eintrag checken und bei Bedarf anpassen - allerdings nach Programmbeendigung auch wieder auf den Ursprungseintrag zurücksetzen, damit's keinen Ärger mit dem User gibt.
Du willst doch nicht etwa ungefragt in der Registry rumspielen

Zitat von DevilsCamp:
... Er landet WIEDER in seiner Behandlungsroutine wo er den Ruhezustand blockiert und wieder aufruft => Endlosscheife. ...
Sowas könnte mal mit ner einfachen Boolean verhindern ...
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 10. Apr 2006, 10:54
Zitat von TeronG:
Du willst doch nicht etwa ungefragt in der Registry rumspielen
Warum nicht? Wenn es wirklich so sicherheitsrelevant ist, ob das Programm geöffnet bleibt oder nicht, dann kann man auch mal die Registry "missbrauchen". Man kann ja bei der ersten Benutzung oder bei der Installation des Programmes auf die Änderung und die Gründe hinweisen. Außerdem ist die Änderung doch nur aktiv, wenn das Programm gestartet ist.

Was machen denn die ganzen "Internet-Cafe Programme", die alle möglichen Sachen vor dem User über die Registry verstecken. Wenn es die Sicherheit erfordert, sollte man schon auch zu solchen Mitteln greifen dürfen.

Gruss
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 10. Apr 2006, 12:51
Zitat von hitzi:
Warum nicht?
Zitat von hitzi:
Man kann ja bei der ersten Benutzung oder bei der Installation des Programmes auf die Änderung und die Gründe hinweisen.
eben ... soo einfach und schon weis der User bescheid ...
Zitat von hitzi:
Außerdem ist die Änderung doch nur aktiv, wenn das Programm gestartet ist.
und wenn während des betriebes des Programmes der wert geändert wird? (regedit oder andere software ..)
Zitat von hitzi:
Was machen denn die ganzen "... Programme", die alle möglichen Sachen ....
Das mag jeder sehen wie er will (das wird eh jeder so machen ^^) aber ich find es einfach nich gut. Und nur weil es alle/viele so machen .....
Also ich fände die erste Idee fals machbar schon recht fein (bis jetzt ^^).
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#17

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 11. Apr 2006, 11:49
ich mach halt einfach eine boolean-Variable etwa so:

Delphi-Quellcode:
procedure getmessage;
begin
  if bool then exit;
  post(abbruchmessage);
  bool:=true;
  save;
  post(shutdownmessage);
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#18

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 14. Mai 2006, 20:24
Inzwischen bin ich so weit gekommen:
Delphi-Quellcode:
procedure TForm1.WMPowerBroadcast(var Msg: TWMPower);
begin
  showmessage('got message: wmpowerbroadcast');
  if ((msg.msg=PBT_APMQUERYSUSPEND) and (not readyforsuspend)) then
  begin
    showmessage('message is pbt_apmquerysuspend');
    Msg.Result := BROADCAST_QUERY_DENY;
    if messagedlg('denied. suspend?',mtinformation,[mbyes,mbno],0)=mryes then
      suspend(self);
  end else
    showmessage('message is not pbt_apmquerysuspend');
end;

procedure suspend(var form:tform1);
begin
  form.readyforsuspend:=true;
  form.closeallowed:=true;
  form.close;
  setsystempowerstate(true,false);
end;
Aber leider funktioniert das ganze nicht. Wenn ich den Ruhezustand auslöse, erhält er zwar die wmpowerbroadcast, aber erkennt nicht, dass es sich um eine pbt_apmquerysuspend handelt.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#19

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 14. Mai 2006, 20:44
Schreibe einen PnP-Treiber der den Ruhezustand nicht unterstützt und installiere ihn. Das funzt immer - den Ruhezustand gibt's dann nimmer.

Aber mal ernsthaft, kannst du das mit dem Verstecken der Daten nochmal genauer ausführen?!

BTW:
Zitat von Union:
Das ist praktische Erfahrung. Und Windows wartet auch nicht auf jedes Programm. Sonst würde ja das Runterfahren verhindert durch Programme, die diese Message gar nicht verarbeiten.
Sowas gibt es natürlich nicht. Denn die Standardfensterroutine dürfte das wohl verarbeiten - und die ist schließlich an der Reihe wenn das eigene Programm eine Nachricht nicht verarbeitet.
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#20

Re: Ruhezustand blockieren-> Versuch erkennen -> selbs

  Alt 14. Mai 2006, 20:47
@treiber: vielleicht eine Stufe zu brutal


ich will den Ruhezustand ja nur verhindern, um dann meine Sachen zu speichern, was unter Umständen länger als 20 Sekunden dauern kann, und dann den Ruhezustand selbst auslösen, so dass es dem User nur "verzögert" scheint.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 06: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