![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Есть совтинка, которая выполняет очень нужную задачу. Какую - не важно. У совтинки простой интерфейс, окошко на подобии Tedit, в которое нужно вбить строку из цифр, нажать Enter, дальше открываются ещё объекты на форме, которые трогать не нужно, просто ещё 2 раза нажать на Enter. Всё, задача запускается.
Проблема заключается в том, что задача выполняется минуты 3-4, затем нужно вбить следующее число и снова трижды нажать Enter. Таких чисел ещё порядка тысячи и они перечислены в файле. Требуется написать маленькую програмульку, которая бы автоматизировала процесс. Предполагаю, что возможно каким-то образом передать другому приложению цепочку как-бы нажатых клавиш. Ведь когда всё подвисает, всё нажатое на клавиатуре где-то сохраняется в каком-то буфере и после развисания всё что было нажато "вылетает". Вот если бы просто вдувать в этот буфер клавиатуры строку из нескольких цифр и трёх ентеров. Типа это всё было нажато с клавы. Наверняка есть возможность и напрямую заполнять Tedit.text, но так как совтинка чужая и что в ней как названо неизвестно, думаю это будет сложнее. Это сообщение отредактировал(а) Alexzz - 13.6.2010, 20:56 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Сперва нужно посмотреть, что это за окошко, с помощью, например, WinSpy.
После этого, брать хендл окошка и посылать туда текст и нажатие клавиш. Относительно времени - можно смотреть либо в сторону 5-ти минутного ожидания, либо определять это каким-либо образом в самой сторонней программе. |
|||
|
||||
Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Спасибо, но это как раз длинный путь. Проторчал весь вечер в гугле, перепробовал массу разных вариантов, всё например на блокнот работает а вот на эдит - нет. В конце концов нашёл вот такой вариант:
Тут не весь код, только то что относится к отправке строки другой программе. Изначально s - строка, которую нужно отправить. Всю строку и код клавиши Enter посылаем сразу, затем ещё через 4 секунды посылаем ещё 2 раза клавишу Enter. Вот такой вариант срабатывает на самых разных текстовых полях, и в мемо и в едитах и в комбобоксах, везде где пробовал. Да, после запуска этой проги, нужно быстро активировать другую программу и установить курсор на первое поле ввода. Для этого предусмотрел задержку 5 секунд. Ну а следующее заполнение просто по таймеру, через 3 минуты и все дела. Проверил - хватает. Поставлю на ночь, пусть выполняет мою работу. ![]() Это сообщение отредактировал(а) Alexzz - 14.6.2010, 01:11 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Это, конечно, тоже решение, но какое-то стремное оно
![]() |
|||
|
||||
Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Но ведь работает!
Сегодня уже сделал большую часть работы, при этом сам плевался в потолок, тоесть занимался другим полезным делом. Добавлено через 4 минуты и 22 секунды Единственное добавил sleep(100) сразу после Sendinput. Иначе бывало что не все символы впечатывались, особенно если срабатывала подсказка (выпадало меню со старыми введёнными кодами) то несколько символов пропадало. А так, символы идут с небольшим интервалом и всё успевает нормально срабатывать. Ну и на вид эффектнее. |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |