Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2011, 08:56   #1
offname
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 35
По умолчанию прочикать чекбоксы в чужом приложении

Суть такая, в конторе есть программа, создавали её давно, исходников нет, о причинах потери не говорят. Программа выполняет определенные действия с бд, после этого выводит список, в котором нужно выбрать, что удалить. Всё работает отлично, но, разработчики забыли добавить кнопку выделить все(автоматом проставить галочки в чекбоксах), список выпадает порой от 100 и более пунктов, ручками все это чикать, как то желание сразу отпадает. Работать надо именно в этой программе. Уже бы давно можно было бы свою написать, но вот условие такое.
Подскажите в сторону чего капнуть, хочу написать программу, которая бы в цикле прочикала все чекбоксы.
offname вне форума Ответить с цитированием
Старый 26.08.2011, 15:33   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Смотреть в сторону API.
FindWindow
FindWindowEx
Искать окно приложения, а в найденном окне искать компоненты.
В Visual Studio есть утилитка Spy которая показывает дескрипторы окон разных программ. Вытаскиваешь необходимые дескрипторы ищешь их функциями и передаешь туда параметры функциями:
SendMessageW
SendMessage
Искать можно по заголовкам окон с помощью функци GetWindowText.
Вот где то так.
Вот пример как я делал ввод данных в чужые текстбоксы
Код:
System.Threading.Thread.Sleep(TimeOut);
UserFormHandle = FindWindow(null, "Информация о лицензии"); // нашли окно 
if (UserFormHandle != (IntPtr)0)
{
      List<IntPtr> MyList = new List<IntPtr>();
      MyList = GetChildWindows(UserFormHandle);// дочерние окна
      for (int c = 0; c < MyList.Count; c++)
         {
           StringBuilder s = new StringBuilder(256);
           IntPtr buf = MyList[c];
           GetWindowText(buf, s, 255);
           if (s.ToString() == "&Имя пользователя:") UserNameHandle = MyList[c + 1];
           if (s.ToString() == "П&ароль:")  UserPasswordHandle = MyList[c + 1];
           if (s.ToString() == "&OК") OKButtonHandle = MyList[c]; // тут указатель на кнопку ОК
          }            
SetForegroundWindow(UserNameHandle); // перевели фокус окна
SendMessageW(UserNameHandle, 0xB1, 0, -1);
System.Threading.Thread.Sleep(TimeOut);
SendKeys.SendWait(UserData.UserName());   // имя пользователя

SetForegroundWindow(UserPasswordHandle); // перевели фокус окна
SendMessageW(UserPasswordHandle, 0xB1, 0, -1);
System.Threading.Thread.Sleep(TimeOut);
SendKeys.SendWait(UserData.UserPass());    //  пароль

SendMessageW(OKButtonHandle, WM_LBUTTONDOWN, 0, 0);
SendMessageW(OKButtonHandle, WM_LBUTTONUP, 0, 0);  // кнопка ок
}
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 26.08.2011 в 15:38.
WorldMaster вне форума Ответить с цитированием
Старый 27.08.2011, 14:13   #3
offname
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 35
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Смотреть в сторону API.
FindWindow
FindWindowEx
Искать окно приложения, а в найденном окне искать компоненты.
В Visual Studio есть утилитка Spy которая показывает дескрипторы окон разных программ. Вытаскиваешь необходимые дескрипторы ищешь их функциями и передаешь туда параметры функциями:
SendMessageW
SendMessage
Искать можно по заголовкам окон с помощью функци GetWindowText.
Вот где то так.
Вот пример как я делал ввод данных в чужые текстбоксы
Код:

спасибо!! Тоже в эту сторону пошёл, скачал пару книг, сейчас изучаю.
offname вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызвать хоткей в чужом приложении. Gypsy Общие вопросы Delphi 6 27.02.2010 11:26
Свою окно в чужом приложении russian-stalker Win Api 2 27.08.2009 11:04
Окно в чужом приложении? Volkogriz Общие вопросы Delphi 3 10.02.2009 18:22
Определить раскладу в чужом приложении. Василий Общие вопросы Delphi 3 02.01.2009 21:30