PDA

View Full Version : Handle of password field



pouyaa
سه شنبه 24 آبان 1384, 13:18 عصر
(chjory mishe handle ye barname ro bdst avord (masalan handle ye password field

vcldeveloper
چهارشنبه 25 آبان 1384, 02:38 صبح
با کد زیر می تونید متن نوشته شده در یک Edit را بدست بیارید، حتی اگه یک فیلد Password باشه.
البته تو ویندوز 2000 و XP دیگه نمیشه از این طریق اقدام کرد :لبخندساده


var
p : TPoint;
hw : HWND;
ClassName,
EditText : array [0..255] of char;
begin
GetCursorPos(p);
hw := WindowFromPoint(p);
if hw > 0 then
begin
GetClassName(hw,ClassName,SizeOf(ClassName));
if (ClassName = 'TEdit') or
(ClassName = 'Edit') or
(ClassName = 'TextBox') then
begin
SendMessage(hw,EM_SETPASSWORDCHAR,0,0);
SendMessage(hw,WM_GETTEXT,SizeOf(EditText),integer (@EditText));
end;
end;
Edit1.Text := EditText;
end;

Naficy
چهارشنبه 25 آبان 1384, 11:00 صبح
برای بدست آوردن هندل یک پنجره، روشهای زیادی وجود دارند:
1 - پنجره زیر ماوس: WindowFromPoint
2 - پنجره دارای فوکس: GetForegroundWindow
3 - پنجره خاصی که مشخصاتش رو می دونید: FindWindowEx
4 - گشتن تمامی پنجره ها: EnumWindows, EnumChildWindows
سپس با کمک همین هندل، عملیات مختلفی می شه انجام داد. منجمله خواندن مقدار فیلد پسورد و...

pouyaa
چهارشنبه 25 آبان 1384, 11:12 صبح
[img]http://www.barnamenevis.org/forum/attachment.php?attachmentid=1408&stc=1[img]

Naficy
شنبه 28 آبان 1384, 20:56 عصر
همونطور که خود آقای کشاورز گفتند، کدشون در ویندوز های 2000 به بالا کار نمی کنه. (البته روی فیلدهای پسورد) برای ویندوز 2000 به بالا روشهای پیچیده تری (مثلا Hook کردن و ...) لازمه.
احتمال می دم دلیل جواب نگرفتنون همین باشه، اشتباه می کنم؟