Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Взять текст [D6, WinME, Win2k]


Страницы:   1 2

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

Все будет кристально ясно ! Читать надо.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо