Доброго всем времени суток!
Есть такая проблема: необходиом в чужом приложении в полее ввода каким нибудь образом вставлять строку. Но есть подозрение, что чужое приложение сплошь неоконные контролы. У кого нибудь есть соображения?
Заранее благодарен!
Здравствуйте, LamerVanek, Вы писали:
LV>Доброго всем времени суток! LV>Есть такая проблема: необходиом в чужом приложении в полее ввода каким нибудь образом вставлять строку. Но есть подозрение, что чужое приложение сплошь неоконные контролы. У кого нибудь есть соображения? LV>Заранее благодарен!
Для начала проверь свою предположение с помощью SPY++ (помоему как-то так), входящему в комплект MS VC. Если подтвердится, можно попробовать тупо программно передвигать мышку на поле ввода, программно кликать, а затем посылать сообщения нажатия клавишь клавиатуры.
Здравствуйте, aleckstein, Вы писали:
>Для начала проверь свою предположение с помощью SPY++ (помоему как-то так), входящему в комплект MS VC. Если подтвердится, можно попробовать тупо программно передвигать мышку на поле ввода, программно кликать, а затем посылать сообщения нажатия клавишь клавиатуры.
К выводу о том что контролы неоконные проверил с помощью SPY++. Действительно так. Можно конечно попробовать последовать вашему совету. Но один из контролов только для чтения... Как быть с ним?
Здравствуйте, LamerVanek, Вы писали:
LV>Здравствуйте, aleckstein, Вы писали:
>>Для начала проверь свою предположение с помощью SPY++ (помоему как-то так), входящему в комплект MS VC. Если подтвердится, можно попробовать тупо программно передвигать мышку на поле ввода, программно кликать, а затем посылать сообщения нажатия клавишь клавиатуры.
LV>К выводу о том что контролы неоконные проверил с помощью SPY++. Действительно так. Можно конечно попробовать последовать вашему совету. Но один из контролов только для чтения... Как быть с ним?
Насколько я знаю поле ввода оконное, потому что для того чтобы иметь фокус и получать сообщения с клавитуры необходимо быть окном. Но есть варианты когда ввод емулирует какой то контроллер.
Необходимо определить через тот же SPY кто же получает сообщения от клавиатуры и сэмулировать для него нажатия клавиш.
Если не подойдет SendMessage, пробуй keybd_event, SendInput.
D>Насколько я знаю поле ввода оконное, потому что для того чтобы иметь фокус и получать сообщения с клавитуры необходимо быть окном. Но есть варианты когда ввод емулирует какой то контроллер. D>Необходимо определить через тот же SPY кто же получает сообщения от клавиатуры и сэмулировать для него нажатия клавиш. D>Если не подойдет SendMessage, пробуй keybd_event, SendInput.
В SPY все окно выглядит как ... битмап чтоли. Причем, когда работаешь с программной напрямую, в то поле ввода, которое не только для чтения, можно чтонить ввести, а вот в то которое для чтения путь файла задается после того, как производится выбор из диалогового окна.
Пробовал находить поля ввода с помощью FindWindowEx.
var edt: hWnd;
...
edt := FindWindowEx(<соотв параметры на память не помню>); // не находит ничего
// а если так то находит но ничего не вставляет, не устанавливает фокус и тд.while edt = 0 do edt := FindWindowEx(<соотв параметры на память не помню>);
Здравствуйте, LamerVanek, Вы писали:
LV>К выводу о том что контролы неоконные проверил с помощью SPY++. Действительно так. Можно конечно попробовать последовать вашему совету. Но один из контролов только для чтения... Как быть с ним?
Ещё вариант — падчить память процесса, но это уже извращение, да и работает нестабильно. Но если ничего не остаётся — можно сделать и так.
... <<Звери — Напитки покрепче>>
Не восхрапи на работе, ибо храпом своим разбудишь начальника своего.