Singles Only!

BlitzMax Forums/Brucey's Modules/Singles Only!

Brucey(Posted 2008) [#1]
Ever wanted to check if your app was already running? Now you can, with wxSingleInstanceChecker.

You create the object either as a global or perhaps as a field of your wxApp object - so that it stays alive for the duration of your program.

Then, given a unique name, simply check on startup :

Method OnInit:Int()
    Local name:String = "MyApp-" + wxGetUserId() 
    
    m_checker = new wxSingleInstanceChecker.Create(name)
    
    If m_checker.IsAnotherRunning() Then 
        wxLogError(_("Another program instance is already running, aborting.")) 
        Return False
    End If
    ... more initializations ... 
    Return True
End Method




Another wxMax tip for your viewing pleasure..

:o)


DavidDC(Posted 2008) [#2]
Very handy!


plash(Posted 2008) [#3]
Indeed!

Is it possible to send information directly to an already existing instance of the application?
For example: I open a file, then I open another file and it detects the application is already running, so it sends the commandline to the existing instance.


Ole JR(Posted 2008) [#4]
Is it possible to send information directly to an already existing instance of the application?
For example: I open a file, then I open another file and it detects the application is already running, so it sends the commandline to the existing instance.

Should be I think with the wxClient/wxDDEClient & wxServer/wxDDEServer classes, when wxMax get those ported..

Or maybe it's doable already...?


SebHoll(Posted 2008) [#5]
Isn't DDE an ancient *Windows-specific* protocol? I doubt there'd be a wx port of it... I'd be interested in knowing a cross-platform way of achieving what Plash is talking about...


Ole JR(Posted 2008) [#6]
Yes DDE is windows only, but there's a wx class for it, don't ask why tho..
Here's a link to the (not so helpful) wxWidget docs on interprocess communication.

http://docs.wxwidgets.org/stable/wx_ipcoverview.html#ipcoverview


Brucey(Posted 2008) [#7]
I'm sure something like zeroconf/avahi/bonjour is more suited to this kind of thing...

...but then again...

If anyone really wants it implementing, I can have a look at it.

As Ole's link suggests, wxServer, wxConnection and wxClient, are a cross-platform implementation of it.


Ole JR(Posted 2008) [#8]
And after digging around in my hd/head trying to find out where I've
seen wxConnection stuff used this way, this is where:
http://wxguide.sourceforge.net/editor.html