Exemplo n.º 1
0
        /// <summary>
        /// 窗体
        /// 加载完毕
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var windowHandle = new WindowInteropHelper(this).Handle;

            // 注册系统快捷键
            var hotKeyRegistSuccess = HotKeyHelper.TryRegist(windowHandle, HotKeyModifiers.Ctrl, Key.Q, () =>
            {
                if (Opacity == 1)
                {
                    Opacity = WindowMinimumOpacity;
                }
                else
                {
                    Opacity = 1;
                }
            });

            if (!hotKeyRegistSuccess)
            {
                txtInput.Text = "Ctrl+Q 快捷键已被其他程序占用";
            }

            // 创建一个新线程,每过 800ms 就重新将该窗体设为置顶(与视频播放器争夺 TopMost)
            _setTopMostThread = new Thread(() =>
            {
                while (true)
                {
                    Thread.Sleep(800);
                    if (_isExit)
                    {
                        break;
                    }
                    Application.Current?.Dispatcher.Invoke(() =>
                    {
                        SetWindowPos(windowHandle, _hwndTopMost, 0, 0, 0, 0, 0x0003);
                    });
                }
            });
            _setTopMostThread.Start();
        }