tyfing
asked on
Prevend double launching of app
What is the code to prevend someone from launching more than 1 instance of my programme ? In simpler terms, it means at any time, only 1 abc.exe is running and not 2.
ASKER
sorry, i'm a newbie...can u put the code into a button ?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
where is the 'Begin' ?
In the actual project1.dpr copy the code, this is out of one I already have.
program Mdiapp;
uses
Forms,Windows,Dialogs,
MAIN in 'MAIN.PAS' {MainForm},
CHILDWIN in 'CHILDWIN.PAS' {MDIChild},
about in 'about.pas' {AboutBox};
{$R *.RES}
var
mHandle: THandle; // Mutexhandle
Project: string;
begin
Application.Initialize;
Application.CreateForm(TMa inForm, MainForm);
Application.CreateForm(TAb outBox, AboutBox);
Project := 'SmurffsProggy';
mHandle := CreateMutex(nil, True, PChar(Project));
if GetLastError = ERROR_ALREADY_EXISTS then begin
MessageDlg('Application already exists, this instance will now close',mtError,[mbOK],0);
halt; // kill the second instance
end
else
Application.Run;
if mHandle <> 0 then CloseHandle(mHandle);
end.
To view the project file in the ide goto the delphi menu Project then select view source.
Hope this helps mate,
Regards
Smurff
program Mdiapp;
uses
Forms,Windows,Dialogs,
MAIN in 'MAIN.PAS' {MainForm},
CHILDWIN in 'CHILDWIN.PAS' {MDIChild},
about in 'about.pas' {AboutBox};
{$R *.RES}
var
mHandle: THandle; // Mutexhandle
Project: string;
begin
Application.Initialize;
Application.CreateForm(TMa
Application.CreateForm(TAb
Project := 'SmurffsProggy';
mHandle := CreateMutex(nil, True, PChar(Project));
if GetLastError = ERROR_ALREADY_EXISTS then begin
MessageDlg('Application already exists, this instance will now close',mtError,[mbOK],0);
halt; // kill the second instance
end
else
Application.Run;
if mHandle <> 0 then CloseHandle(mHandle);
end.
To view the project file in the ide goto the delphi menu Project then select view source.
Hope this helps mate,
Regards
Smurff
Also as a newbie you should know about some sites that would have this kind of code on it so you can save your points on EE. Try these first before asking Qs.
www.torry.net and click on tips
www.delphi3000.com
www.delphifaq.com
www.delphipages.com
and theres lots more and these have links to them.
Just a note, if you know them then just ignore me :)
regards
Smurff
www.torry.net and click on tips
www.delphi3000.com
www.delphifaq.com
www.delphipages.com
and theres lots more and these have links to them.
Just a note, if you know them then just ignore me :)
regards
Smurff
Hi
here's a routine from another forum
Thanks to RLord:
T.
How to prevent multiple instances
One of the best way (and the fastest) is with CreateMutex
-------------------------- ------
Example:
-------------------------- ------
program project1;
uses....
begin
// make sure this comes before everything else
CreateMutex(nil, false, ’Someproject’);
if GetLastError = ERROR_ALREADY_EXISTS then begin
SendMessage(HWND_BROADCAST ,
RegisterWindowMessage(’Som eproject’) ,
0,
0);
Halt(0);
end;
// and other stuff...
end.
here's a routine from another forum
Thanks to RLord:
T.
How to prevent multiple instances
One of the best way (and the fastest) is with CreateMutex
--------------------------
Example:
--------------------------
program project1;
uses....
begin
// make sure this comes before everything else
CreateMutex(nil, false, ’Someproject’);
if GetLastError = ERROR_ALREADY_EXISTS then begin
SendMessage(HWND_BROADCAST
RegisterWindowMessage(’Som
0,
0);
Halt(0);
end;
// and other stuff...
end.
tongalite,
isnt that what Ive put :)
S.
isnt that what Ive put :)
S.
Hi smurff..
errrr...well I guess it is now I come to look at your offering... blame sun glare on my screen :-)
T.
errrr...well I guess it is now I come to look at your offering... blame sun glare on my screen :-)
T.
lol the more help the better i suppose :)
Regards
S.
Regards
S.
Here ya go..
Follow this link
http://community.borland.com/article/0,1410,16015,00.html