Use named mutex objects.
First create a named musted object as the first step in ur application. Check if mutex already available or not. Handle it accordingly.
No. The program starts up automatically upon system logon, and the icon appears in the system tray (near clock). A user may not notice the icon , thus he/she starts the program manually, and then pops up program's main window.
Check out NSApplication's -applicationShouldHandleReopen:hasVisibleWindows:
By default, if you return YES from this method, the default reopen behavior will be performed. If you don't want this, you can use this method to do what you want instead, and return NO.