Re: The best way to determine if my app is already running
Re: The best way to determine if my app is already running
- Subject: Re: The best way to determine if my app is already running
- From: John Stiles <email@hidden>
- Date: Mon, 7 Jun 2004 15:05:19 -0700
On Jun 4, 2004, at 5:15 PM, m wrote:
On Jun 4, 2004, at 3:36 PM, John Stiles wrote:
I have an app where its personality is largely data-driven--it can be
totally different to the end user based on data within the bundle.
But the code is all the same. Several copies of this app can be
running simultaneously.
I want to be able to detect if a certain personality of the app is
active, and then switch to it if it is. I can't base it on something
like bundle identifier or application signature, since like I was
saying, the code is always identical.
So what's the easiest way to register some global system property
that would allow me to connect an identifier (i.e., a product name
specified in my data) with a running app? So I could say "Is there a
personality Foo active?" and it could say, "Yes, and here is its
ProcessSerialNumber." I am open to either Carbon or Cocoa concepts
(my app is mostly Cocoa based, but I come from a long Carbon
background).
Sounds like Distributed Objects will do nicely for this.
Read up: <http://www.stepwise.com/Articles/Technical/TalkToMe.html>
Then make your apps register an object with a name that is dependent
on the apps personality.
_murat
Wow! This is really cool! It was simpler than I could have imagined.
- (oneway void) wakeUp
{
[NSApp activateIgnoringOtherApps:YES];
}
bool SwitchToAlreadyRunningInstance()
{
NSString *name = [NSString
stringWithUTF8String:PersonalityName().c_str()];
NSDistantObject *otherInstance = [NSConnection
rootProxyForConnectionWithRegisteredName:name
host:NULL];
if( otherInstance != NULL )
{
[otherInstance wakeUp]; // a warning that NSDistantObject can't
respond to wakeUp, do I need to cast?
return true;
}
NSConnection *theConnection = [NSConnection defaultConnection];
[theConnection setRootObject:s_myApp];
[theConnection registerName:name];
return false;
}
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.