[fpc-pascal]shutting down win9x
Thomas Schatzl
tom_at_work at yline.com
Thu Jul 12 11:03:24 CEST 2001
----- Original Message -----
>From: Kanzelsberger Pavel
>To: 'fpc-pascal at deadlock.et.tudelft.nl'
>Sent: Thursday, July 12, 2001 10:09 AM
>Subject: RE: [fpc-pascal]shutting down win9x
>
> [Pavel wrote]
>When Windows shutsdown by ExitWindows() or by ExitWindowsEx() it's
>send CTRL_SHUTDOWN_EVENT messages to processes... as far I
>remember, you should refer to Win32 SDK
CTRL_SHUTDOWN_EVENT is sent to console processes only. Imho it's better to
create an invisible GUI process and monitor WM_QUERYENDSESSION because you
don't have a dos box window hanging around then.
>I think you should write some small process monitoring this message and
>then quickly execute anything you want...
The message handler could look like the following:
const
done_my_stuff : Boolean = false;
function WindowHandler(wnd : HWnd; msg : DWord; wParam, lParam : Longint) :
Longbool;
begin
case (msg) of
WM_QUERYENDSESSION : begin
// only execute user proc if not already done
if (not done_my_stuff) then
PostMessage(wnd, WM_USER, 0, lParam);
// tell windows to 'abort' logoff if program
// hasn't executed yet
result := done_my_stuff;
end;
WM_USER : begin
// you could as well spawn another process (call program) here
Do_Your_Stuff_here;
done_my_stuff := true;
if ((lParam and ENDSESSION_LOGOFF) <> 0) then
lParam := EWX_LOGOFF
else
lParam := EWX_SHUTDOWN;
ExitWindowsEx(lParam, 0); // abort windows ourselves
result := true;
end;
else begin
result := DefWindowProc(wnd, msg, wParam, lParam);
end;
end;
end;
*Should work* (didn't verify). This doesn't work with W2k/NT - you need to
get permissions whether you're allowed to shutdown the computer first before
calling ExitWindowsEx with EWX_SHUTDOWN.
Refer to the SDK help how to do that, there's an example how to do that.
> [Lee John wrote]
>Is it possible automatically to run a fpc (or other) program when one
>clicks on the Start/Shut Down menu on the
>win9x desktop, before windoze start its shutdown sequence? How?
>
>Does windoze look somewhere for a bat file called shutdown.bat ot whatever?
>Where? TIA for any info - think I should probably know this!
No. But there are already lots of tools available on the 'net which allow
that.
Regards,
Thomas
More information about the fpc-pascal
mailing list