-
Jan 24th, 2008, 08:37 AM
#1
Thread Starter
New Member
VB6 Cancelling WM_DESTROY in an external application
I have an ActiveX control that runs in another application, doing various functions. I want to stop the application from closing while my ActiveX control is still running.
Is it possible to hook WM_DESTROY and cancel it?
TIA,
rokujou
-
Jan 24th, 2008, 06:41 PM
#2
Re: VB6 Cancelling WM_DESTROY in an external application
That would be an extremely bad idea, for several reasons.
For one, the application would think that it had already closed, and all of the code in the _Unload event (or at least _QueryUnload) would already have been run, which means the program will probably be unusable from that point, as well as the user probably being confused/annoyed about the program not actually closing.
Also, if there is a bug somewhere in your code, the program will not be able to close at all - unless Windows terminates it (which would more than likely be an immediate stop, with no events being fired).
A control is supposed to be a child of a form, not the owner/controller of it. Instead of trying to 'take charge', you should 'give advice', and accept that your 'advice' wont always be taken.
The best thing to do is to take two steps.. first add an extra property to your control called something like "IsBusy" or "SafeToClose", which the form can check in its _QueryUnload event, and depending on the value of that property cancel the unloading (perhaps after giving the user a choice).
The next thing is to ensure that your control can exit gracefully if it is forced to close. To do that, add code to the UserControl_Terminate event which tidies up as appropriate.
-
Jan 24th, 2008, 07:09 PM
#3
Thread Starter
New Member
Re: VB6 Cancelling WM_DESTROY in an external application
Thanks for the reply, si_the_geek.
The problem I have is, the parent unloads when focus is lost - I'm trying to prevent this because my code launches external applications, which forces focus of the external app. The idea is that the user will be able to "lock" the window open until they've finished doing what they're doing.
I didn't create the parent application, so I can't change the way it works. Thus, my original question still stands - is it possible?
-
Jan 24th, 2008, 07:14 PM
#4
Re: VB6 Cancelling WM_DESTROY in an external application
It is probably possible, but I would definitely avoid it, as it will be unsafe.
You may not have created the parent application, but as it uses your control, I would assume that you have access to either the code or the person who did create it - and as such could get minor alterations made to it (and the alteration would probably be just one line of code!).
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|