Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 13 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 15.10.2003
Откуда: NNov\Warsong
Имеется программа на Дельфи (основное окно, в нем еще одно). В ней надо заполнить одну-единственную форму (цифры).
Само окно определяется, но передать цифры в неё не получается. Используется команда SendMessage. :weep:

_________________
Хочешь рассмешить Бога - расскажи ему о своих планах!



Партнер
 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
А поподробней? Какие сообщения, пробовал ли WM_SETTEXT, WM_KEYDOWN?

_________________
#77


 

Member
Статус: Не в сети
Регистрация: 15.10.2003
Откуда: NNov\Warsong
WM_SETTEXT пробовал, но у меня просто заменялся заголовок окна :insane:
т.е. вид кода у меня такой
h:=FindWindow(nil, 'имя окна');
...
mesaga:=SendMessage(h,WM_SETTEXT,0,lparam(LPCTSTR('00000000')));
где 00000000 - те цифры к-е я должен ввести


ЗюЫю А у WM_KEYDOWN - какие параметры?

_________________
Хочешь рассмешить Бога - расскажи ему о своих планах!


 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
Значит ты просто нашел главное окно программы. А в ней есть другое окно - собственно Edit (я правильно понял, что там именно Edit?), его хендл и надо найти и использовать для SendMessage.

_________________
#77


 

Member
Статус: Не в сети
Регистрация: 15.10.2003
Откуда: NNov\Warsong
Asteroid Нет. Имя окна нужного меняется... Но как определить хендл именно окна для ввода? Программа, в том то и дело, что не моя. :(

_________________
Хочешь рассмешить Бога - расскажи ему о своих планах!


 

Member
Статус: Не в сети
Регистрация: 20.11.2003
ZanyIV Может, поможет... http://delphimaster.ru/articles/winapi/index.html

Добавлено спустя 3 минуты, 15 секунд:
Обрати внимание на:

Код:
FindWindowEx - Ищет дочернее окно
GetClassName - Узнает имя класса заданного окна
GetClientRect - Достает Rect клиентской области окна
GetWindowText - Возвращает текст окна


 

Member
Статус: Не в сети
Регистрация: 15.10.2003
Откуда: NNov\Warsong
Mike-L Как я говорил окно через FindWindow я нашел, в этом окне есть одна единственная строка для заполнения (скорее всего Edit). Когда я использую SendMessage, то меняется не Edit, а имя окна. Как указать, что надо изменить именно Edit, а не имя окна? :insane:

_________________
Хочешь рассмешить Бога - расскажи ему о своих планах!


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ZanyIV
Ты нашел окно, но тебе надо найти его дочернее окно. И не удивляйся, если оно не будт классом EDIT.
VCL такими вещами не пользуется.
Придется немного поизвращаться.
1. С помощью функции GetProp получаешь VCL класс, ассоциированный с этим окно.
2. Открываешь память этого процесса на чтение.
3. По VMT этого класса читаешь его имя.
4. Если это TEdit или то, что тебе надо, используешь SetWindowText для установки значения.

_________________
Цель жизни - d20 по жизни...


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Цитата:
Ты нашел окно, но тебе надо найти его дочернее окно. И не удивляйся, если оно не будт классом EDIT.

Ну оно будет классом TEdit :), также как главное окно можно найди по классе скажем TMainForm ну или как его назовеш.


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
Ray Adams
Хм... можно и так.. О StrPCopy(WinClassName, ClassName) я и забыл.. :(

_________________
Цель жизни - d20 по жизни...


 

Member
Статус: Не в сети
Регистрация: 20.11.2003
ZanyIV Я же выделил функцию поиска дочерних окон и получение их типа. TEdit в этом контексте - тоже окно. Вот в него и делай "SendMessage"


 

Member
Статус: Не в сети
Регистрация: 15.10.2003
Откуда: NNov\Warsong
Спасибо всем большое, особенно Mike-L и Asteroid :beer:
Правда теперь возникла другая проблема... :( после ввода строки надо еще Enter, код #010 и #013 не помогает, переход на новую строку происходит, а эффекта аналогично ентеру нет.

_________________
Хочешь рассмешить Бога - расскажи ему о своих планах!


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ZanyIV
Enter - это не что иное, как:
1. WM_KEYDOWN и WM_KEYUP с wParam = VK_RETURN
2. Нажатие на default button на форме.

_________________
Цель жизни - d20 по жизни...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 13 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan