Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Тип окна Добавлено: 07.08.07 16:55  

Автор вопроса:  dNW
Всем здрасьте.
Простите за ламерский вопрос, но как определить тип окна, знаю HWND? Ну в смысле кнопка это, текстбокс или лейбл итд.
GWL_STYLE возвращает всегда разные значения. ClassName у всех разный - у кого Edit, а у кого TEdit.

Есть ли универсальный способ?

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 07.08.07 18:53
Не нравится GWL_STYLE, юзай GetClassName :)
ClassName у всех разный - у кого Edit, а у кого TEdit.

Так и должно быть, 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
То есть определить со 100% точностью поле вводу не удастся.
Не получится. Попробуй хранить в проге все наиболее часто используемые классы текстовых полей.

Ответить

Номер ответа: 6
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #6 Добавлено: 07.08.07 23:03
Ладно. Попробую. Спасибо за идею

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 14.08.07 22:16
Да, попробуй перехватывать CreateCaret

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам