コード例 #1
0
        public string GetProcessName(int hwnd)
        {
            int pid;

            User32Wrapper.GetWindowThreadProcessId(hwnd, out pid);
            var process = Process.GetProcessById(pid);

            return(process.ProcessName);
        }
コード例 #2
0
        public string GetWindowText(int hwnd)
        {
            var       result = "";
            const int nChars = 256;
            var       buffer = new StringBuilder(nChars);

            if (User32Wrapper.GetWindowText(hwnd, buffer, nChars) > 0)
            {
                result = buffer.ToString();
            }
            return(result);
        }
コード例 #3
0
        public int GetActiveWindow()
        {
            var hwnd = User32Wrapper.GetForegroundWindow();

            if (hwnd != 0 && _hwnd != hwnd)
            {
                ActivityChanged(_hwnd, hwnd, DateTime.Now.Ticks - _ticks);
                _ticks = DateTime.Now.Ticks;
                _hwnd  = hwnd;
            }

            return(hwnd);
        }
コード例 #4
0
        public string GetExecutableFilename(int hwnd)
        {
            var result = "";
            int pid;

            User32Wrapper.GetWindowThreadProcessId(hwnd, out pid);
            var process = Process.GetProcessById(pid);

            try
            {
                result = process.MainModule.FileName;
            }
            catch { }

            return(result);
        }
コード例 #5
0
        public void Start()
        {
            LogManager.GetInstance().Info("Activity monitor started.");
            _started = true;
            _activityStack.Load();
            _hwnd  = User32Wrapper.GetForegroundWindow();
            _ticks = DateTime.Now.Ticks;

            TimerCallback refreshCallback = (obj => GetActiveWindow());

            _refreshTimer = new Timer(refreshCallback, null, 0, RefreshInterval);

            TimerCallback sendCallback = (obj => SendData(_activityStack.GetActivities()));

            _sendDataTimer = new Timer(sendCallback, null, 0, SendDataInterval);
        }