Re: How to keep my com exe alive?



You need to create a top-level (perhaps invisible) window.
This window can receive WM_ENDSESSION as Igor already
pointed out. Alternatively, you can register a console control
handler (see SetConsoleCtrlHandler), though I'm not 100%
sure if this works with non-console processes...

--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@xxxxxxxx
MVP VC FAQ: http://www.mvps.org/vcfaq
=====================================

"shaji" <shajiparemmal@xxxxxxxxx> wrote in message
news:1142225431.869623.318420@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
A small (seemingly silly :)) ) question. If I wnat my exe to be
terminated only at the time of shutdown or user log off (the forceful
termionation) how would I handle this issue.
Will I be able to take any action when the exe is forcefully
terminated?
Thanks,
Shaji

Alexander Nickolov wrote:
You have to decide how does your executable terminate -
when does it decide to do so.

As for trapping WM_QUIT - you don't have to - simply
insert your code after the message loop.

--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@xxxxxxxx
MVP VC FAQ: http://www.mvps.org/vcfaq
=====================================

"shaji" <shajiparemmal@xxxxxxxxx> wrote in message
news:1141900821.832271.200760@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hi Igor,
Thanks for this.
Overriding PostMessageLoop works when the Module.Lock() is not used. If
I use the Lock() and does not call Unlock() anywhere, the exe will go
down only when the system shuts down, right?
Now, what I am looking for is a way to trap the WM_QUIT that is sent to
my exe when the system shuts down and save my internal data at that
time.
Is that possible? If yes, how can I do it?
Thanks,
Shaji.

Igor Tandetnik wrote:
"shaji" <shajiparemmal@xxxxxxxxx> wrote in message
news:1141820689.598628.253300@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
1. I want to keep my com exe (just one ATL COM object - free
threaded
- dual interface) running even after all the clients have quit. But
I
don't want to make it a service.

Call _Module.Lock() to keep yourself alive. Call Unlock() when you
finally decide it's time to terminate.

2. When the exe shuts down, I want to save some internal data (in
fact, an stl list) onto the disk so that it can be read when next
time the exe starts up

Override PostMessageLoop in your CAtlExeModule-derived class.
--
With best wishes,
Igor Tandetnik

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925




.



Relevant Pages