Контроль активности другого процесса - C#
Формулировка задачи:
Доброго всем времени суток.
Подскажите пож-та, каким образом можно отследить через С#, что кто-нибудь использует другой процесс. А именно, вот из C# у меня запускается браузер (примитив IExplorer), необходимо допустим если в течении 10 мин никто не нажимает в браузере никакие кнопочки, скролики, картиночки, ссылочки и т.д. что б он закрывался..(глушить тоже через C# соответсвенно). Вопрос..как узнать, что в браузере что-нибудь клацнули..и счетчик времени обнулить..до тех пор пока никто 10 мин не будет трогать. Заранее большое спасибо.
Решение задачи: «Контроль активности другого процесса»
textual
Листинг программы
//Сайт internal static class WinAPI { [DllImport("user32.dll", SetLastError = true)] internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", SetLastError = true)] internal static extern bool ShowWindow(IntPtr hwnd, int nCmdShow); [DllImport("Kernel32")] public static extern int GetTickCount(); [DllImport("user32.dll", SetLastError = true)] internal static extern bool CloseWindow(IntPtr hwnd); [DllImport("user32.dll", SetLastError = true)] internal static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam); } [DllImport("user32.dll")] static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); internal struct LASTINPUTINFO { public uint cbSize; public uint dwTime; } private const UInt32 WM_CLOSE = 0x0010; Sait sait; private void SAIT_Click(object sender, EventArgs e) { if (flag_sait == 0) { MessageBox.Show("Данный раздел программы находится в разработке.\n", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { n = 0; //System.Diagnostics.Process.Start("www.ya.ru"); Process.Start("iexplore.exe", "mail.ru");//google.ru psait = 0; while (psait < 400) { psait = psait + 1; } Thread.Sleep(9000); LASTINPUTINFO info = new LASTINPUTINFO(); info.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)); IntPtr hWnd1 = WinAPI.FindWindow("IEFrame", ("Mail.Ru: почта, поиск в интернете, новости, игры, развлечения"));//Google - Windows Internet Explorer WinAPI.ShowWindow(hWnd1, 3);//SW_ShowNormal Thread.Sleep(300); psait = 0; while (psait < Convert.ToInt32(sait_finish)) { // Thread.Sleep(10000); psait = WinAPI.GetTickCount(); GetLastInputInfo(ref info); lasttime = (int)info.dwTime; psait = (psait - lasttime) / 1000; } WinAPI.CloseWindow(hWnd1); WinAPI.PostMessage(hWnd1, WM_CLOSE, 0, 0);//WM_QUIT 0x0012; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д