public SingleInstance(int port, bool sessionUnique, ActivateApp activator) { if (sessionUnique) { port += System.Diagnostics.Process.GetCurrentProcess().SessionId; } try { InitFirstInstance(port, activator); return; } catch (RemotingException) { _FirstInstance = false; } if (!_FirstInstance) { try { ActivateFirstInstance(port); } catch (Exception) { _FirstInstance = true; } } }
protected void InitFirstInstance(int port, ActivateApp activator) { IpcChannel serverChannel = new IpcChannel("localhost" + ":" + port); ChannelServices.RegisterChannel(serverChannel, false); //init and publish remote singletone object _Single = new RemoteSingleInstance(); _Single.Activator = activator; RemotingServices.Marshal(_Single, "RemoteObject.rem"); }
private void HookKeyboardCallback(Keys key, KeyboardHook.KeyState keystate, string character) { if (KeyboardActivation.HookKeyboardProccess(key, keystate)) { if (Settings.Default.KeyboardShortcut) { if (Clipboard.ContainsText()) { ChangeUserInputWord("", false); LoadTextFromClipboard(); this.Show(); this.Activate(); ActivateApp.ActivateApplication(); } } } }
public SingleInstance2(string appName, ActivateApp activator) { bool first; _Activator = activator; _SyncObject = new Semaphore(0, 1, appName, out first); _FirstInstance = first; if (first) { _SyncThread = new Thread(Activate); _SyncThread.IsBackground = true; _SyncThread.Start(); } else { _SyncObject.Release(); } }