![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Взять текст [D6, WinME, Win2k]
guliver © (2002-02-28 01:32:00)Привет всем! Как из чужого окна из edit box"a со звездочками получить нормальный текст? Заранее спасибо.
Derr (2002-04-11 17:03:00) [1]>Suntechnic
По существу просили:
Посылаем окну SendMessage(H, WM_CHAR,...
Нажатие CTR/a и Ctr/insert
В буфере обмена имеем содержимое ..
Модуль sendkeysroutine.zip
См. на http://blackman.km.ru/primer.html
Таити, таити. Нас и тут неплохо кормят !
esprit_bel (2002-04-08 05:48:00) [2]Дорогой Raptor тут промелькнуло "У меня на Win2k "прет". :-)".А что бы это значило?
Raptor (2002-04-07 01:12:00) [3]Да нет. Это я так, не удержался. ;-))
Suntechnic (2002-04-06 23:18:00) [4]>Raptor ©,cok ©
Вы решили флейм месечной давности по новой пройти? :)
Raptor (2002-04-06 21:30:00) [5]2 cok
Да ты что!
У меня на Win2k "прет". :-)
А может Win2k ниже "Вунь98"... ;-))
cok (2002-04-06 19:23:00) [6]Сабж попрет только на Вунь98 и ниже (может и на Ме).
Raptor (2002-04-06 14:49:00) [7]Тут подсказать ничего нельзя. Если разработчики написали для этих целей специальный контрол и не используют стандартный, то только они знают как там все устроено. И никакие WM_GETTEXT и EM_SETPASSWORDCHAR здесь не помогут. :-(
esprit_bel (2002-04-05 08:51:00) [8]Мужики я тут на всё на это посмотрел все красиво.Но есть такое хитрое окно "wingate internet client login".Мы долбим его долго-долго и мало-мало получили.Вы же умные ребята подскажите что- нибудь реальное!
Kernel32.dll (2002-03-10 02:20:00) [9]Если программа "довит" месседж WM_GETTEXT можно попробовать скормить ей EM_SETPASSWORDCHAR и перерисовать окно. Работает только с EDIT и TEDIT, но других запароленных я и не встречал
Suntechnic (2002-03-08 17:37:00) [10]Кто ж диалоговые окна пароля с помощью CreateDialog создаёт? Надо как минимум DialogBox использовать. Сам бы попробовал да честно говоря лень и какой в этом смысл? Это ничего нового в дискуссию не добавит. Как я уже и говорил, универсальный путь всё одно будет с использованием методов внедрения. А кто виноват что WM_GETTEXT не работает это не так принципиально.
Raptor (2002-03-08 16:16:00) [11]Ну вот. Сделал пример создания диалога на чистом Win API с использованием функции CreateDialog. Диалог простенький - только две кнопки и эдит. Как я и ожидал текст из эдита вытягивается безо всяких проблем. Так что можно с увереностью сказать, что все дело в MFC и Делфа здесь ни при чем.
Raptor (2002-03-06 22:12:00) [12]Возможно и так. Но мне кажется, что даже если диалог создается с помощью функций Win API, то при этом тоже явно вызывается CreateWindowEx, только эти вызовы запрятаны в глубинах CreateDialog. Я не знаю другого метода создания окон и скорее всего его и не существует.
Надо будет как-то попробовать создать диалог с помощью средств Win API и посмотреть как он будет реагировать.
Suntechnic (2002-03-05 23:04:00) [13]>Raptor © (05.03.02 22:53)
Да в том то и дело, что MFC здесь скорее всего ни при чём. Пробовать честно говоря лень, но я почти уверен, что если написать пример с диалогом ввода пароля на Win API, то ты получишь такой же результат. А всё дело в том, что для создания диалоговых окон на Win API ты не применяшь прямые вызовы CreateWindowEx, а перекладываешь эти ф-ции на саму Win API. Delphi же построена так, что для любого "окна" делается прямой вызов CreateWindowEx. Так что проблема скорее всего имеенно в этом.
Raptor (2002-03-05 22:53:00) [14]Не знаю. С MFC я не очень дружу. Но если класс контрола один и тот же, то не имеет значения как он был создан. Делфа использует стандартный класс EDIT и класс TEdit только его обертка.
Может в MFC перехватывается процедура окна эдита и там игнорируется WM_GETTEXT. Причем, я так заметил, что это происходит только для некоторых эдитов, которые предназначены именно для ввода пароля. В других приложениях, написаных тоже с помощью MFC, текст без проблем вытаскивается. Даже если создавать контрол класса EDIT самому с помощью CreateWindowEx текст тоже без проблем вытаскивается. Отсюда выплывает, что проблемма именно в MFC. Но повторюсь, я с ней не очень дружу, потому ничего конкретного сказать не могу.
Suntechnic (2002-03-05 16:43:00) [15]>Raptor © (05.03.02 10:42)
А какой по-твоему edit используется в MFC? Тут дело скорее всего в другом. В принципиальном подходе создания самого диалогового окна. В MFC все диалоговые окна создаются так, как и предусмотрено в WinAPI: с помощью шаблона ресурса. Так что говорить о нестандартности как-то язык не поворачивается. А вот в Delphi применяется несколько другой подход. Вопрос: это где ж тогда по-твоему нестандартно?
Raptor (2002-03-05 10:42:00) [16]2 Suntechnic
Скорее наоборот... Delphi использует нестандартый Edit ;)
Не, делфа использует стандартный эдит, проверено.
Если не веришь, можешь посмотреть исходники VCL.
Suntechnic (2002-03-05 00:20:00) [17]>Raptor © (04.03.02 19:48)
>Имхо в MFC они специально для паролей используют не стандартный эдит, а какой-то класс-надстройку над ним...
Скорее наоборот... Delphi использует нестандартый Edit ;)
>derr (04.03.02 16:18)
>Все будет кристально ясно ! Читать надо.
Ты бы лучше по существу чего-нибудь сказал, вместо того, чтобы демагогией заниматься, начитанный ты наш...
Suntechnic (2002-03-05 00:20:00) [18]>Raptor © (04.03.02 19:48)
>Имхо в MFC они специально для паролей используют не стандартный эдит, а какой-то класс-надстройку над ним...
Скорее наоборот... Delphi использует нестандартый Edit ;)
>derr (04.03.02 16:18)
>Все будет кристально ясно ! Читать надо.
Ты бы лучше по существу чего-нибудь сказал, вместо того, чтобы демагогией заниматься, начитанный ты наш...
Raptor (2002-03-04 19:48:00) [19]2 absent
Не люблю связываться со статичными массивами :)
Я тоже. ;-)
Но здесь вот в чем дело. Иногда у меня пролетал такой глюк, что
SendMessage(...,WM_GETTEXTLENGTH,...) возвращал 0, а в самом деле текст в эдите был. Причем при насильном выставлении размера буфера и вызове SendMessage(...,WM_GETTEXT,...) текст я получал нормально. Потому теперь для этих целей, что бы подстраховаться, я всегда использую статический массив и не вызывю WM_GETTEXTLENGTH.
2 Suntechnic
Да, я знаю эту проблему с MS-скими эдитами. Имхо в MFC они специально для паролей используют не стандартный эдит, а какой-то класс-надстройку над ним, который не возвращает текст по WM_GETTEXT.
2 [NIKEL]
Интересно, а ты пробовал все это запустить под Win NT/2k/XP?
Попробуй, потом расскажешь что у тебя получилось. ;-)
derr (2002-03-04 16:18:00) [20]Много споров из ничего.
Идем на
http://blackman.km.ru/docum.html
и качаем:
proga.zip Взаимодействие с другими программами
Getwinapi.zip
Использование Debug API: пример перехвата вызовов функций Win32 API Ketmar, Мастера Delphi(8)
api.zip
Справочник по функциям Windows API(92
Все будет кристально ясно ! Читать надо.