前因:当电脑登了微信,手机微信通知设置了”windows微信已登录,手机通知关闭“,这个时候手机的系统通知栏不会通知
直接原因:我下班回家,个人习惯是直接锁屏不关机,经常忘记退出微信,然后导致回到家接收不到微信通知,漏掉很多朋友的消息
结果:所以想开发一个程序,当我电脑锁屏后直接关掉微信,让我手机能够正常通知到,故开发了此程序,很简单,下列是主要的代码逻辑
public partial class App : Application { private static System.Threading.Mutex IMutex; protected override void OnStartup(StartupEventArgs e) { SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch); string MyAppID = "OnlyRun_Client";//运行进程互斥标识名称 可自行修改 IMutex = new System.Threading.Mutex(true, MyAppID); if (IMutex.WaitOne(0, false)) { ///正常启动程序 base.OnStartup(e); } else { MessageBox.Show("程序已经在运行!", "提示", MessageBoxButton.OK, MessageBoxImage.Asterisk); this.Shutdown();//已存在运行进程 执行关闭 } } void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e) { var session = e.Reason; switch (session) { //用户登录 case SessionSwitchReason.SessionLogon: ExecSession("用户登录"); break; //解锁屏 case SessionSwitchReason.SessionUnlock: ExecSession("解锁屏"); break; //锁屏 case SessionSwitchReason.SessionLock: BeginSessionLock(); break; //注销 case SessionSwitchReason.SessionLogoff: ExecSession("注销"); break; } } private void ExecSession(string msg) { Console.WriteLine("===>" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " " + msg + "\n"); CommonLog.LogWrite(msg); } /// <summary> /// 锁屏后执行 /// </summary> private void BeginSessionLock() { ExecSession("锁屏后执行\n"); string isopen = Config.ReadIni("EnableOpen", "IsOpen", null); if(isopen == "1") { Common.RunCmd("taskkill /F /IM wechat.exe"); ExecSession("执行完成\n"); } } }
个人程序我上传到gitee,路径是
https://gitee.com/wzhsun/start-tool
你可以修改成关闭其他程序,希望该程序能解决大家的困扰
程序可以去网盘下载
链接:https://pan.baidu.com/s/17JCH0MaO1UwKf6Biv5xL_w
提取码:x25t