Страница: 1 |
Страница: 1 |
Вопрос: Тип окна
Добавлено: 07.08.07 16:55
Автор вопроса: dNW
Всем здрасьте.
Простите за ламерский вопрос, но как определить тип окна, знаю HWND? Ну в смысле кнопка это, текстбокс или лейбл итд.
GWL_STYLE возвращает всегда разные значения. ClassName у всех разный - у кого Edit, а у кого TEdit.
Есть ли универсальный способ?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 07.08.07 18:53
Не нравится GWL_STYLE, юзай GetClassName
Так и должно быть, TEdit — это не Edit
Номер ответа: 2
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #2
Добавлено: 07.08.07 20:24
Но ведь и то, и другое - текстбоксы? Или нет?
Просто я делаю программу, которая в чужих окнах ищет дочерние и из них выбирает только текстбоксы.
Может ты подскажешь как их отобрать?
Номер ответа: 3
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #3
Добавлено: 07.08.07 20:33
Номер ответа: 4
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #4
Добавлено: 07.08.07 21:00
Как что? Поле ввода. Например такое, в какое я сейчас пишу этот пост.
Хотя ход ваших с шарпом мыслей мне ясен. Edit и TEdit - это два принципиально разных по своему типу контрола. Они, только что, похожи внешне.
То есть определить со 100% точностью поле вводу не удастся.
Просто делаю программу, которая автоматически заполняет поле в окнах. Не хотелось бы записать данные на кнопку, понимаете о чем я?
Номер ответа: 5
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #5
Добавлено: 07.08.07 22:03
Номер ответа: 6
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #6
Добавлено: 07.08.07 23:03
Ладно. Попробую. Спасибо за идею
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 08.08.07 12:21
Можно попытаться проверить, создает ли некоторое окно каретку ввода
Номер ответа: 8
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #8
Добавлено: 08.08.07 14:56
...или более извращенный вариант:
- Запоминает собержимое буффера обмена в переменную А
- Очищаем буффер обмена
- Посылаем активному контролу Ctrl+A (или Ctrl+Home, Shift+Ctrl+End), Ctrl+C (или Ctrl+Insert)
- Запоминает собержимое буффера обмена в переменную В
- Восстанавливаем буффер обмена из переменной А
В переменной В будет содержимое текстового поля или пустота
Правда такой способ надо дорабатывать, иначе будет сбрасываться выделенный текст и курсор будет оказываться в конце текстовика.
Просто привет этот способ как альтернативный вариант.
Номер ответа: 9
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #9
Добавлено: 09.08.07 08:42
2ZagZag
Ужос. Спасибо, но я запарюсь это делать
2Sharp
Как? Через CreateCaret?
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 14.08.07 22:16
Да, попробуй перехватывать CreateCaret