Avatar billede hugopedersen Nybegynder
01. marts 2010 - 07:31 Der er 14 kommentarer og
1 løsning

Program lukkes p.g.a. Windows shutdown

Jeg har et program hvor jeg har følgende kode i

protected
  procedure WMQUERYendSESSION(var Message: TMessage); Message WM_QUERYendSESSION;


procedure TfrmMain.WMQUERYendSESSION(var Message: TMessage);
begin
  bolWindows_Shutdown := True;
  Log_Event(conSource_System, conItem_Shutdown, conProgram_Name + ' v ' + AppVersion + ' build ' + AppBuild);
  Inherited;
end;

Meningen med det er at jeg skal fange hvis programmet lukkes ned fordi Windows lukkes ned eller genstarter.
Men det virker bar ikke.
Nogen der har en ide om hvordan det kan kringles.
Avatar billede kroning Nybegynder
01. marts 2010 - 11:59 #1
Jeg har ikke testet det men prøv at flytte din Log_Event(.. kald ind under din hoved forms OnClose event, altså

procedure TMainForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
if bolWindows_Shutdown then
Log_Event(..
Avatar billede hugopedersen Nybegynder
01. marts 2010 - 13:20 #2
Har den også på FormDestroy - der gør den ingen forskel.

Jeg mener også jeg har haft den på FormClose uden held, men det kan da testes.
Avatar billede kroning Nybegynder
01. marts 2010 - 13:28 #3
Kan kun sige at jeg også benytter WM_QUERYendSESSION løsningen i flere programmer og jeg har ikke oplevet problemer.

Hvordan virker det ikke hos dig?
Avatar billede hugopedersen Nybegynder
01. marts 2010 - 13:33 #4
Jeg får ikke skrevet noget i min logfil.

Har lige prøvet på både Destroy og Close - uden held.

'problemet' består i at maskinen af forskellige årsager er sat op til at reboote hver nat kl. 04.00 og det vil jeg gerne kunne se i min log. Jeg kan selvfølgelig se hvornår programmet starter, men det irriterer mig at den ikke vil skrive når Windows lukker programmet. (det virker fint hvis det er mig selv der lukker programmet)
Avatar billede martinlind Nybegynder
01. marts 2010 - 13:41 #5
Det kunne godt værre at pc'ens bios bare lukker den ned og windows ikke bliver lukket "rigtigt" og det er derfor du ikke får din endsession besked ??
Avatar billede hugopedersen Nybegynder
01. marts 2010 - 13:49 #6
Hvis jeg manuelt går ind og genstarter eller lukke windows så får jeg ikke det forventede resultat - hvad kan det være i BIOS der har indflydelse på det?

(Maskinen er en DELL Optiplex 760 med Windows XP)
Avatar billede preppydude Nybegynder
04. marts 2010 - 09:22 #7
Mener du skal bruge WMEndSession . Prøv det her:
procedure WMEndSession(var Message: TWMEndSession); message WM_ENDSESSION;

...

implementation

procedure TDinForm.WMEndSession(var Message: TWMEndSession);
begin
  if (Message.EndSession=True) then
  begin
    Log_Event(conSource_System, conItem_Shutdown, conProgram_Name + ' v ' + AppVersion + ' build ' + AppBuild);
  end;
end;
Avatar billede hugopedersen Nybegynder
04. marts 2010 - 09:31 #8
Den har jeg også prøvet - den fanger heller ingenting i mit tilfælde.
Avatar billede preppydude Nybegynder
04. marts 2010 - 09:38 #9
Har du prøvet at udskifte kaldet til din log funktion med en simpel ShowMessage(), bare for at se om koden overhovedet bliver executed?

Jeg kan desværre ikke selv teste en masse da jeg ikke har Windows. Så du bliver prøveklud. :P
Avatar billede hugopedersen Nybegynder
04. marts 2010 - 10:53 #10
Det ser ud til at jeg har fået det kombineret på en måde nu så det ser ud til at fungere efter hensigten.
Jeg bruger både WMQUERYendSESSION og WMEndSession

(WMQUERYendSESSION er for at sætte en variabel der fortæller mit program at Windows lukker det og at det så ikke skal spørge om man nu er sikker)

Men jeg tror at det der har snydt mig er at ham der har lavet genstartsproceduren på computeren hvor programmet kører, har lavet det så processen med mit program bliver slået ned før genstart - og den fanger ingen af disse metoder.

Så jeg må udbede mig et par svar for input.
Avatar billede hugopedersen Nybegynder
17. marts 2010 - 14:52 #11
Er der ingen der vil svare så jeg kan lukke igen?
Avatar billede preppydude Nybegynder
17. marts 2010 - 14:56 #12
Fik du løst problemet? Jeg havde slet ikke opfanget du havde svaret. :)
Avatar billede hugopedersen Nybegynder
19. marts 2010 - 06:59 #13
Fandt ud af hvad der var galt ja - programmet blev ikke lukket af Windows men af en proceskiller før genstart og det fanges ikke.

kroning?
Avatar billede kroning Nybegynder
20. marts 2010 - 00:29 #14
Ingen points til mig.
Avatar billede hugopedersen Nybegynder
09. april 2010 - 16:03 #15
Så lukker vi da bare..........
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester