Я успешно написал приложение, чтобы нажать кнопку в другом приложении. Теперь я пытаюсь повторить нажатия кнопок в цикле, и мое приложение зависает, но я не понимаю, почему.Нажатие кнопки в другом приложении в цикле
Контекст
У меня есть приложение, которое очень полезно для меня, но человек, который разработал его не думать обо всем. В какой-то момент в приложении открывается диалоговое окно с просьбой подтвердить замену существующих данных загруженными данными. Мне нужно нажать OK, чтобы согласиться, но проблема в том, что я загружаю много данных в это приложение, и у него нет флажка «применимо ко всем». Поэтому я должен нажать OK неоднократно. Поэтому я работаю над приложением, которое будет нажимать кнопку OK, пока не исчезнет диалог.
Код
код нажать кнопку один раз (это работает) ...
private void btnOKloop_Click(object sender, System.EventArgs e)
{
int hwnd=0;
IntPtr hwndChild = IntPtr.Zero;
//Get a handle for the Application main window
hwnd = FindWindow(null, "Desired MessageBox");
hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "OK");
//send system message
if (hwnd != 0)
{
SendMessage((int)hwndChild, BN_CLICKED, 0, IntPtr.Zero);
}
else
{
MessageBox.Show("Button Could Not Be Found!", "Warning", MessageBoxButtons.OK);
}
}
код, чтобы нажать на кнопку в цикле (это висит) ...
private void btnOKloop_Click(object sender, System.EventArgs e)
{
int hwnd=0;
IntPtr hwndChild = IntPtr.Zero;
hwnd = FindWindow(null, "Desired MessageBox");
hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "OK");
do
{
SendMessage((int)hwndChild, BN_CLICKED, 0, IntPtr.Zero);
} while (hwnd != 0);
Парни, пожалуйста, кто-нибудь? Я уверен, что это очень просто, но я пробовал много сотрудников, и ничто из этого не работает, приложение зависает и все. Также я искал в Интернете и использовал поиск в Stackoverflow, безуспешный !!!!! ПОЖАЛУЙСТА!!!! – o0Lucky0o
Ваш вопрос не очень ясен. Вы говорите, что как только вы нажмете кнопку, чтобы запустить цикл, зависает ваше приложение, возможно, это потому, что этот цикл работает в потоке пользовательского интерфейса? Пожалуйста, будьте более конкретными и опубликуйте код, который действительно дает вам проблемы. – Alberto
Ваше приложение кажется зависающим, потому что оно работает через цикл, неоднократно вызывая 'SendMessage'. Возможно, вы должны изменить свой код, чтобы запустить цикл в другом потоке, или отправлять периодические сообщения на основе таймера, а не циклически. –