PasswordChar обман Windows
Многие из начинающих считают, что раз Дядя-VCL создал PasswordChar в таких объектах как TEdit,
значит это намертво скрытый от всех глаз набор символов.
Но разумеется это не так, по крайней мере для создателя программы
Ничего "хакерского" в этой статье не будет, хотя, вероятно, судя по названию можно подумать иначе)
Если вы не работали с ClipBoard, то сегодня вы поймете как просто получить доступ к тексту в буфер обмена посредством VCL
(хотя на низком уровне работа с ClipBoard'ом - жуткая вещь)
Хотя желание написать данную статью появилось не столько из-за значимости ее содержания, сколько из-за реакции Windows на подобного рода обман. А почему я назвал это обманом вы сейчас поймете..
Приступим:
Для начала подключим
#include <ClipBrd.hpp>
Ничего особенного, элементарно получаем состояние клавиши CTRL в обработчике TEdit OnKeyDown, если Key == 'C', значит происходит копирование в буфер обмена.
Извлекать/записывать текстовую информацию в ClibBoard очень удобно функцией AsText
Код:
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (GetKeyState(17)) { if (Key == 67) { Clipboard()->AsText=Edit1->Text; } } }
Ну и наглядный результат:
Интересно увидев такую запись многие бы усомнились в ней? Ведь в буфере у нас прекрасно расположилось содержимое Edit'а! Вот вам пример дезинформирующих сообщений Windows!