How prevent running an application twice ?

Post Reply
User avatar
driessen
Posts: 1239
Joined: Mon Oct 10, 2005 11:26 am
Location: Genk, Belgium

How prevent running an application twice ?

Post by driessen »

Hello,

A FW16 application can't be run twice on a PC, unless it is run in different parts of the memories (properties of shortcut).

How can I prevent that a FW32 application is run twice ?

Thanks.

Michel
Regards,

Michel D.
Genk (Belgium)
_____________________________________________________________________________________________
I use : FiveWin for (x)Harbour v. 21.01 - Harbour 3.2.0 (October 2020) - xHarbour Builder (January 2020) - Bcc7
techops
Posts: 4
Joined: Wed Nov 29, 2006 11:23 pm
Location: Sydney, Australia

Post by techops »

there is a tmutex class from fivewin.info (Patrick Mast) you should look at
Richard Grayden
Sydney,
NSW Australia
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Code: Select all

#include "FiveWin.ch" 

#define GW_CHILD      5 
#define GW_HWNDNEXT   2 

function Main() 

   local oWnd 
    
   if Is Exe Running( cFileName( HB_ARGV( 0 ) ) ) 
      ShowApplication() 
   else    
      DEFINE WINDOW oWnd TITLE "Test" 
    
      ACTIVATE WINDOW oWnd 
   endif    
    
return nil    

function ShowApplication() 

   local hWnd := FindWnd( cFileNoExt( HB_ARGV( 0 ) ) ) 
    
   if hWnd != nil 
      SetForeGroundWindow( hWnd ) 
   endif    
    
return nil    

function FindWnd( cTitle ) 

   local hWnd := GetWindow( GetDesktopWindow(), GW_CHILD ) 

   while hWnd != 0 
      if Upper( cTitle ) $ Upper( GetWindowText( hWnd ) ) 
         return hWnd 
      endif 

      hWnd = GetWindow( hWnd, GW_HWNDNEXT ) 
   end 

return nil 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Antonio Linares wrote:

Code: Select all

if Is Exe Running( cFileName( HB_ARGV( 0 ) ) )
IsExeRunning() :-)

EMG
User avatar
driessen
Posts: 1239
Joined: Mon Oct 10, 2005 11:26 am
Location: Genk, Belgium

Post by driessen »

Thanks guys.

You were a great help.

My questions has been answered greatfully.

Regards,

Michel
Regards,

Michel D.
Genk (Belgium)
_____________________________________________________________________________________________
I use : FiveWin for (x)Harbour v. 21.01 - Harbour 3.2.0 (October 2020) - xHarbour Builder (January 2020) - Bcc7
User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Post by James Bott »

If I remember correctly, isExeRunning() doesn't work with MDI apps when there is at least on child window open (since the main window title changes) and it can also fail to work properly if there is a folder of the same name open.

James
User avatar
yam_hiong
Posts: 16
Joined: Sun Oct 23, 2005 3:00 pm
Location: Pontianak - Indonesia
Contact:

Post by yam_hiong »

I'm using this code because sometimes HB_ARGV(0) acts weird on some computers, ie. slow start, my app can run twice, etc.

Code: Select all

IF IsExeRunning(cFileName(GetModuleFileName(GetInstance())))   //cFileName(HB_ARGV(0))
   msgalert("Program already running!"+CRLF+"This program cannot be started more than one instance!")
   QUIT
ENDIF
Post Reply