Программно закрывать MessageBox работающих приложений используя WinApi - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Делаю кликер, который должен закрывать появляющиеся MessageBox'ы приложений. Сделал тестовое приложение, где по нажатию на кнопку появляется MessageBox(на рис.). Мой кликер находит тестовое приложение(FindWindow) и нажимает на кнопку вызова MessageBox с помощью SendMessage- все работает исправно. Но я не могу закрыть сам MessageBox, используя данные процедуры. Подскажите, КАК закрывать эти MessageBox?
Листинг программы
  1. IntPtr appHandle = FindWindow(IntPtr.Zero, "LoginError"); //нахожу окно MessageBox
  2. IntPtr loginPromptOKButtonHWND = FindWindowEx(appHandle, IntPtr.Zero, "Button", null); //нахожу окно кнопку в MessageBox
  3. SendMessage(appHandle, WM_COMMAND, BN_CLICKED, loginPromptOKButtonHWND);//пытаюсь нажать эту кнопку

Решение задачи: «Программно закрывать MessageBox работающих приложений используя WinApi»

textual
Листинг программы
  1. const uint IDCANCEL = 2;
  2.  
  3. IntPtr hwndMsgBox = FindWindow(IntPtr.Zero, "LoginError");
  4. IntPtr hwndButton = FindWindowEx(hwndMsgBox, IntPtr.Zero, "Button", null);
  5. if (hwndMsgBox != IntPtr.Zero && hwndButton != IntPtr.Zero)
  6. {
  7.     SendMessage(hwndMsgBox, WM_COMMAND, IDCANCEL | (BN_CLICKED << 16), hwndButton);
  8. }

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


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

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

15   голосов , оценка 4.267 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы