⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mousekeyboardsensor.cs

📁 飞信的收发使用csharp进行开发
💻 CS
字号:
namespace Imps.Client.Pc.Sensor
{
    using Imps.Client.Pc;
    using Imps.Client.Pc.BizControls;
    using Imps.Common;
    using System;
    using System.Runtime.InteropServices;

    internal class MouseKeyboardSensor : PresenceSensorBase, IDisposable
    {
        private int _tickCountMainWnd;
        private int _tickCountMouseOrKeyboard;
        private bool disposed;

        public MouseKeyboardSensor(IFrameworkWindow frameworkWnd) : base(frameworkWnd)
        {
            base.MainForm.VisibleChanged += new EventHandler(this.MainForm_VisibleChanged);
            base.MainForm.Activated += new EventHandler(this.MainForm_VisibleChanged);
        }

        private void CheckSensors()
        {
            win32api_wrapper.LASTINPUTINFO lii = new win32api_wrapper.LASTINPUTINFO();
            lii.cbSize = Marshal.SizeOf(lii.GetType());
            lii.dwTime = 0;
            if (win32api_wrapper.GetLastInputInfo(ref lii))
            {
                int num2 = (int) (win32api_wrapper.GetTickCount() - lii.dwTime);
                int num3 = base.ImpsConfig.UserSetting.SensorSetting.OfflineOnIdle.Value ? base.ImpsConfig.UserSetting.SensorSetting.OfflineOnIdleHours.Value : 0;
                int num4 = base.ImpsConfig.UserSetting.SensorSetting.AwayOnIdle.Value ? base.ImpsConfig.UserSetting.SensorSetting.AwayOnIdleMinutes.Value : 0;
                if ((num3 > 0) && (num2 > (num3 * 0x36ee80)))
                {
                    base.PresenseValue = MainPresence.Offline;
                }
                else if ((num4 > 0) && (num2 > (num4 * 0xea60)))
                {
                    base.PresenseValue = MainPresence.Away;
                }
                else
                {
                    base.PresenseValue = MainPresence.Online;
                }
            }
        }

        public void Dispose()
        {
            bool disposed = this.disposed;
            this.disposed = true;
        }

        ~MouseKeyboardSensor()
        {
            this.Dispose();
        }

        private void MainForm_VisibleChanged(object sender, EventArgs e)
        {
            try
            {
                if (base.MainForm.Visible)
                {
                    this._tickCountMainWnd = Environment.TickCount;
                }
            }
            catch
            {
            }
        }

        public override bool Poll()
        {
            this.CheckSensors();
            return base.Poll();
        }

        public override void Reset()
        {
            this._tickCountMouseOrKeyboard = Environment.TickCount;
            this._tickCountMainWnd = this._tickCountMouseOrKeyboard;
            base.Reset();
        }

        public bool ShouldHideMainWindows()
        {
            int num = base.ImpsConfig.UserSetting.MainWindowSetting.AutoHide ? base.ImpsConfig.UserSetting.MainWindowSetting.AutoHideSeconds : 0;
            return ((num > 0) && ((Environment.TickCount - this._tickCountMainWnd) > (num * 0x3e8)));
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -