🐛 1修复程序崩溃, :boom:2添加时钟显秒

This commit is contained in:
BookerLiu
2022-07-25 17:57:57 +08:00
parent 6f62e6b2a0
commit a50d88f2c2
23 changed files with 1239 additions and 131 deletions

View File

@@ -1,7 +1,11 @@
using GeekDesk.Control.UserControls.Config;
using GeekDesk.Control.Windows;
using GeekDesk.Util;
using GeekDesk.ViewModel;
using Gma.System.MouseKeyHook;
using System;
using System.Drawing;
using System.Threading;
using System.Windows;
using System.Windows.Threading;
@@ -10,54 +14,90 @@ namespace GeekDesk.MyThread
public class MouseHookThread
{
private static AppConfig appConfig = MainWindow.appData.AppConfig;
private static IKeyboardMouseEvents m_GlobalHook = Hook.GlobalEvents();
private static Dispatcher dispatcher;
private static IKeyboardMouseEvents middleHook = null;
private static Dispatcher middleDP;
public static void MiddleHook()
{
//使用dispatcher来单独监听UI线程 防止程序卡顿
dispatcher = DispatcherBuild.Build();
m_GlobalHook = Hook.GlobalEvents();
dispatcher.BeginInvoke((Action)(() =>
middleDP = DispatcherBuild.Build();
middleHook = Hook.GlobalEvents();
middleDP.Invoke((Action)(() =>
{
m_GlobalHook.MouseUpExt += M_GlobalHook_MouseUpExt;
middleHook.MouseUpExt += MiddleHookFun;
}));
}
public static void Dispose()
private static Color GetBottomBeforeColor()
{
m_GlobalHook.MouseUpExt -= M_GlobalHook_MouseUpExt;
m_GlobalHook.Dispose();
dispatcher.InvokeShutdown();
return GetColor(1760, 985);
}
private static Color GetTopBeforeColor()
{
return GetColor(1751, 693);
}
private static Color GetColor(int w2, int h2)
{
double w = 1920;
double h = 1080;
double width = SystemParameters.PrimaryScreenWidth;
double height = SystemParameters.PrimaryScreenHeight;
System.Drawing.Point p = new System.Drawing.Point((int)(w2 / w * width), (int)(h2 / h * height));
return ScreenUtil.GetColorAt(p);
}
/// <summary>
/// 鼠标中键呼出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void M_GlobalHook_MouseUpExt(object sender, System.Windows.Forms.MouseEventArgs e)
private static void MiddleHookFun(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (appConfig.MouseMiddleShow && e.Button == System.Windows.Forms.MouseButtons.Middle)
if (e.Button == System.Windows.Forms.MouseButtons.Middle)
{
if (MotionControl.hotkeyFinished)
//中键打开App
if (appConfig.MouseMiddleShow)
{
App.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Render, new Action(() =>
if (MotionControl.hotkeyFinished)
{
if (MainWindow.mainWindow.Visibility == Visibility.Collapsed || MainWindow.mainWindow.Opacity == 0)
App.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Render, new Action(() =>
{
MainWindow.ShowApp();
}
else
{
MainWindow.HideApp();
}
}));
if (MainWindow.mainWindow.Visibility == Visibility.Collapsed || MainWindow.mainWindow.Opacity == 0)
{
MainWindow.ShowApp();
}
else
{
MainWindow.HideApp();
}
}));
}
}
}
}
public static void DisposeMiddle()
{
try
{
if (middleHook != null)
{
middleHook.MouseUpExt -= MiddleHookFun;
middleHook.Dispose();
middleDP.InvokeShutdown();
}
}
catch (Exception ex) { }
}
}
}