Link to home
Start Free TrialLog in
Avatar of APS NZ
APS NZFlag for New Zealand

asked on

Closing Windows Applications programatically

I am using D1 and WIN 3.11
I need a way of closing other open applications from within my ap.  The other programs which may be open, I have written myself in Delphi, but the Title Bars do not contain a caption, so I can't use the obvious API call.
Can someone please provide a code snippet for me.

Thanx in advance
Avatar of ronit051397
ronit051397

Closing a notepad document:
SendMessage(FindWindow('Notepad', nil), wm_Close, 0, 0);
Avatar of APS NZ

ASKER

Sorry, Ronit, but that won't work because as I mentioned, the ap does not have a caption in the Title Bar.
Ronit's answer doesn't need a caption in the title bar!  Replace 'notepad' with your form class name:

E.g.  SendMessage(FindWindow(PChar('TMyForm'), nil), WM_CLOSE, 0, 0);

JB
Avatar of APS NZ

ASKER

Hi JimBob - thanks for replying.  I've just tried your suggestion and I still can't get the Ap to close - any other ideas??  JD

Mmm...  I've used this method in Delphi 2 & 3, so I assume it should work in Delphi 1.  (The Win api help is the same for Win 3.1 and Win 95.)

You can check it by creating a simple Delphi app, with form class TMyForm.  Create a second app which calls SendMessage(...);  If your first app has no code preventing it from closing, then it should close!  Try also with notepad and Ronit's SendMessage code.

It's possible that Delphi 1 works a little differently from Delphi 2 & 3.  If this is the case try:
In your app to close:
  Application.Title := 'Test App';

In your calling app:
  SendMessage(FindWindow('TApplication', 'Test App'), WM_CLOSE, 0, 0);

I don't think this will work, but try it anyway...

JB
Avatar of APS NZ

ASKER

Thanks JimBob

I ran a test as you suggested and it worked. I cut and pasted the code to my own calling ap and it didn't work.  I finally realised that both forms were called TMainForm!!
There's 50 points up for grabs if you turn this into an answer  (or should Ronit come back and claim it).

Thanks again.
Jimi deserves the points, mainly for his patience.
ASKER CERTIFIED SOLUTION
Avatar of JimBob091197
JimBob091197

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of APS NZ

ASKER

Thanks to both you guys - and sorry, Ronit - My ignorance of WINAPI calls and things I had read led me to believe that you needed a caption to work with.
JD