HKarel |
Отправлено: 03.02.2005, 01:52 |
|
Не зарегистрирован
|
У сторонней прораммы есть два edit-а и SpeedButton-кнопка. Требуется запустить программу из своего приложения, заполнить едиты инфой и нажать на конпку.
С запуском и заполнением вроде все понятно, а вот с нажатием на кнопку возникли трудности. Подскажите, плз. как это можно сделать.
|
|
Gedeon |
Отправлено: 03.02.2005, 12:14 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
У нее нету хэндла, поэтому, я думаю, надо найти ее координаты и послать форме сообщение нажатия крысы в этих координатах,
вот пример нажатия
CODE |
HWND X = FindWindow("TForm1", "SpeedB");
if(X) ShowMessage("Find");
LPARAM Low = MAKELPARAM(88,17);
SendMessage(X,WM_LBUTTONDOWN,NULL,Low);
SendMessage(X,WM_LBUTTONUP,NULL,Low); |
Но это если кнопа всегда на одном месте, а если она перемещается надо дальше думать.
|
|
HKarel |
Отправлено: 03.02.2005, 15:58 |
|
Не зарегистрирован
|
Спасибо, Gedeon, проблему полечило (кнопка не перемещается), правда возникла еще одна трудность: при нажатии кнопки меняетс ее капшин, можно ли отловить момент когда это произойдет.
|
|
Gedeon |
Отправлено: 03.02.2005, 17:15 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (HKarel @ 03/02/2005, 17:00) | при нажатии кнопки меняетс ее капшин, можно ли отловить момент когда это произойдет. |
Это произойдет при нажатии кнопки.
|
|
HKarel |
Отправлено: 03.02.2005, 17:40 |
|
Не зарегистрирован
|
Согласен, масо масляное Попробуем по другому: Внешнее приложение имеет кнопку с надписью "Connect". После того как я заполняю лог и пароль, по Вашему рецепту, "жму" на кнопку. Внешняя прога начинает делать какие-то свои операции, а я жду, скажем 5 секунд. Если по истечении этого времени надпись на кнопке не сменилась на "Disconnect" — я должен выдать сообщение пользователю, что мол "Фиг Вам", в противном случае минимизировать внешнюю форму. |
|
Gedeon |
Отправлено: 03.02.2005, 18:05 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Ну первое, что в данной ситуации приходит в голову — взять кусок канвы формы, и побитно сравнить ее рисунок с заранее заданным(когда например дисконнект), а так вообще может поискать другие пути определения установки соединения.
|
|
olegenty |
Отправлено: 04.02.2005, 08:06 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а что мешает завязаться на пользовательские события-то? при коннекте — происходит его посыл типа
CODE | PostMessage(HWND_BROADCAST, CM_CONNECTED, 0, 0); |
прога по таймеру 5 секунд ждёт этого сообщения (по таймеру), и если его не было — всё, пипец, в трей.
хуже, если внешнее приложение написано не тобой. тогда кроме предложения Gedeon меня тоже ничто не посещает, хотя я и понаблюдал бы за внешней прогой с помощью Spy++, может она генерит события при коннекте, которые можно будет хватануть...
|
|
HKarel |
Отправлено: 04.02.2005, 11:29 |
|
Не зарегистрирован
|
Внешнее приложение — стороннее. Скорее всего придется остановится на предложении Gedeona, возиться с хуком для такой маленькой прилады — не хочется. |
|
Vital_K |
Отправлено: 04.02.2005, 13:41 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
Too HKarel. Очень заинтересовала твоя тема. По возможности рапиши как ты отлавливаешь и заполняешь Edit'ы. По возможности простенькие исходники с комментариями.
Заранее благодарен. Мой e-mail: shodek@yandex.ru
|
|