Контроль активности другого процесса - 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;
             }
         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы