See also:
How can I tell if another instance of my program is already running?
i use the following code before starting my application, to check if another instance
of it is already started:
var _PreviousHandle : THandle;
begin
_PreviousHandle := FindWindow('TfrmMainForm',nil);
if _PreviousHandle <> 0 then
begin
ShowMessage('Application "" is already running!');
SetForegroundWindow(_PreviousHandle);
ShowWindow(_PreviousHandle, SW_SHOW);
Application.Terminate;
Exit;
end;
...
However, if it has started, i need to show that application. The problem is after it is shown in this way the minimize button no longer works, and when i click the icon in the taskbar, it “unminimizes” and the animation that is shown is as if it was minimized. Am i missing something? is there a proper way to activate and show external application while it’s minimized?
Here is a complete project, which keeps running only one instance of the application, and which should bring already running instance window to front.
You can download a
testing projector try the code, which follows:Project1.dpr
Unit1.pas
Tested on OS versions:
Known issues and limitations:
MainFormOnTaskbaris not taken into account at all; it must be set to True at this time