Member
Статус: Не в сети Регистрация: 15.10.2003 Откуда: NNov\Warsong
Имеется программа на Дельфи (основное окно, в нем еще одно). В ней надо заполнить одну-единственную форму (цифры).
Само окно определяется, но передать цифры в неё не получается. Используется команда SendMessage.
_________________ Хочешь рассмешить Бога - расскажи ему о своих планах!
Member
Статус: Не в сети Регистрация: 15.10.2003 Откуда: NNov\Warsong
WM_SETTEXT пробовал, но у меня просто заменялся заголовок окна т.е. вид кода у меня такой
h:=FindWindow(nil, 'имя окна');
...
mesaga:=SendMessage(h,WM_SETTEXT,0,lparam(LPCTSTR('00000000')));
где 00000000 - те цифры к-е я должен ввести
ЗюЫю А у WM_KEYDOWN - какие параметры?
_________________ Хочешь рассмешить Бога - расскажи ему о своих планах!
Member
Статус: Не в сети Регистрация: 30.01.2003 Откуда: Москва
Значит ты просто нашел главное окно программы. А в ней есть другое окно - собственно Edit (я правильно понял, что там именно Edit?), его хендл и надо найти и использовать для SendMessage.
Добавлено спустя 3 минуты, 15 секунд: Обрати внимание на:
Код:
FindWindowEx - Ищет дочернее окно GetClassName - Узнает имя класса заданного окна GetClientRect - Достает Rect клиентской области окна GetWindowText - Возвращает текст окна
Member
Статус: Не в сети Регистрация: 15.10.2003 Откуда: NNov\Warsong
Mike-L Как я говорил окно через FindWindow я нашел, в этом окне есть одна единственная строка для заполнения (скорее всего Edit). Когда я использую SendMessage, то меняется не Edit, а имя окна. Как указать, что надо изменить именно Edit, а не имя окна?
_________________ Хочешь рассмешить Бога - расскажи ему о своих планах!
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
ZanyIV Ты нашел окно, но тебе надо найти его дочернее окно. И не удивляйся, если оно не будт классом EDIT.
VCL такими вещами не пользуется.
Придется немного поизвращаться.
1. С помощью функции GetProp получаешь VCL класс, ассоциированный с этим окно.
2. Открываешь память этого процесса на чтение.
3. По VMT этого класса читаешь его имя.
4. Если это TEdit или то, что тебе надо, используешь SetWindowText для установки значения.
Member
Статус: Не в сети Регистрация: 15.10.2003 Откуда: NNov\Warsong
Спасибо всем большое, особенно Mike-L и Asteroid Правда теперь возникла другая проблема... после ввода строки надо еще Enter, код #010 и #013 не помогает, переход на новую строку происходит, а эффекта аналогично ентеру нет.
_________________ Хочешь рассмешить Бога - расскажи ему о своих планах!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения