Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Увидеть пароль скрытый за звёздочками 2

Delphi , Синтаксис , Пароли

Увидеть пароль скрытый за звёздочками 2

Автор: Baa
WEB-сайт: http://forum.vingrad.ru

Наверно так: хотя классов может быть больше

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Wnd: HWND;
  lpClassName: array[0..$FF] of Char;
begin
  Wnd := WindowFromPoint(Mouse.CursorPos);
  GetClassName(Wnd, lpClassName, $FF);
  if ((strpas(lpClassName) = 'TEdit') or (strpas(lpClassName) = 'EDIT')) then
    PostMessage(Wnd, EM_SETPASSWORDCHAR, 0, 0);
end;

Дополнение от: Mikel

Здесь проблема: если страница памяти защищена, то её нельзя прочитать таким способом, но можно заменить PasswordChar(пример: поле ввода пароля в удаленном соединении)

Here's the translation of the text into Russian:

Код, написанный на Delphi, имеет целью сделать скрытый пароль видимым, отправляя сообщение EM_SETPASSWORDCHAR в контроле редактирования при событии таймера. Парольный символ устанавливается в нуль, что означает, что он будет отображаться как звездочка (*) или другой символ, указанный свойством PasswordChar контрола редактирования.

Рассмотрим код:

  1. Процедура Timer1Timer вызывается таймером компонента на форме.
  2. Она получает handle окна под курсором мыши с помощью функции WindowFromPoint.
  3. Получает имя класса окна с помощью функции GetClassName. Имя класса хранится в массиве lpClassName.
  4. Если имя класса равно 'TEdit' или 'EDIT', то это означает, что окно - контрол редактирования, и код отправляет сообщение окну для установки парольного символа.

Комментарий Микаэля подчеркивает важный момент: если страница памяти защищена, этот метод не будет работать. Вместо этого можно использовать альтернативные подходы, такие как замену парольного символа на другой символ (как упоминается в примере полей паролей удаленного соединения).

Вот улучшенная версия кода:

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Wnd: HWND;
  lpClassName: array[0..255] of Char;
begin
  Wnd := WindowFromPoint(Mouse.CursorPos);
  GetClassName(Wnd, lpClassName, SizeOf(lpClassName));
  if (StrPas(lpClassName) = 'TEdit') or (StrPas(lpClassName) = 'EDIT') then
    PostMessage(Wnd, EM_SETPASSWORDCHAR, Chr(0), 0); // Установка парольного символа в нуль
end;

Обратите внимание, что я изменил функцию SizeOf для указания размера массива lpClassName в 256 (максимальная длина имени класса Windows). Это обеспечивает корректную работу кода даже если имя класса длиннее 255 символов.

В статье описывается процедура TForm1.Timer1Timer(Sender: TObject), которая позволяет увидеть скрытый за звёздочками пароль в текстовом поле TEdit или EDIT, используя функцию PostMessage и событие Timer.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Пароли ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 15:58:31/0.010458946228027/2