コード例 #1
0
ファイル: SingleInstance.cs プロジェクト: hummerd/AppManager
        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;
                }
            }
        }
コード例 #2
0
ファイル: SingleInstance.cs プロジェクト: hummerd/AppManager
        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");
        }
コード例 #3
0
 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();
             }
         }
     }
 }
コード例 #4
0
ファイル: SingleInstance.cs プロジェクト: hummerd/AppManager
        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();
            }
        }