![]() |
|
Модераторы: Akina |
![]()
|
|
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
В программе выполняется некое весьма критичное действие. Требуется убедиться что пользователь сознательно хочет выполнения этого действия. Для этого вызывается функция, которая выводит на экран окно, содержащее TextBox, Label и Command. Label содержит инструкцию, в т.ч. в её теле достаточно длинную псевдослучайную строку (произвольная смесь больших и малых латинских букв). Для подтверждения намерения произвести действие пользователь должен набрать эту строку руками в TextBox и кликнуть кнопку (или там завершить ввод Enter-ом, что не суть важно). Есссно если строки не совпадают, функция возвращает CANCEL_ACTION, и нет проблем. Но вот при совпадении строк функция должна вернуть PERFORM_ACTION только в том случае, если весь ввод осуществлялся строго с клавиатуры. Т.е. при использовании Copy-Paste, DragDrop, экранной клавиатуры и пр. функция должна возвращать CANCEL_ACTION.
Вопрос - как? особенно с учетом того что возможны и стирания набранного текста, и выделение части его мышом, и переключение раскладки, и модификаторы (и Shift, и Caps/Num Lock), и еще груда всего - вплоть до переключения в другие приложения и обратно. И вообще - решаема ли задача? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Akina, из Label же нельзя копировать. Так ему точно приходится набирать только ручками.
-------------------- Никогда не говори никогда |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
boevik
Главным образом видимо надо избежать программной обработки - а получить Caption несложно... впрочем получается что и эталонную строку надо прятать... Просто сгенерил я счас тест-прогу, которая фиксирует вызовы всех методов TextBox-a, разбираюсь в том какие события и с какими параметрами возникают... но уж больно их до фига получается, особенно KeyDown/KeyUp... вот и думаю, мож кто такую или схожую задачу когда решал или с аналогичными вещами разбирался... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Akina, если програмно, то можно и caption прочитать и сгенерить нажатие клавы.
Одним словом, обойти можно. А вот если вместо label, картинку показывать, да позаковырестее. Тогда прийдется только ручками. Добавлено @ 17:31 Вот, типа такой картинки. ![]() Ни один OCR не разберет. -------------------- Никогда не говори никогда |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
boevik
мда-с... наверное все-таки действительно бред... бум мыслить... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Akina, если надумаешь чего... поделись.
-------------------- Никогда не говори никогда |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
Че там думать?
типа того. Если юзер вставит, то n=1 or 2. Как когда. А ежели писать будет, то... n=Len(Label1.Caption) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Black_Star
Щазз! Ctrl-C+Ctrl-V посимвольно. Или ещё проще - нужное количество кликов мышом в текстбоксе. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
Мля... ну сделай проверку на нажатие клавиш через GetAsyncKeyState, если 1й вариант не устраивает.
|
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
А вот вам еще идейка
Сохранять историю событий от текстбокса по величине равную длине контрольной строки. Далее, при проверки, сравнивать вот Эту историю событий. К примеру, при вставке, история будет содержать только события мыши и/или комбинацию Контрол-Инс и т.д. Есс-но, что это не совпадет с кейкодами нужных буковок. Как считаете, сработает? -------------------- Я желаю всем Счастья! |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |