Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как достать символы в окошке ввода пароля (видны звёздочки)  (Прочитано 9384 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
v.korleone
Помогающий

ua
Offline Offline

« : 30-11-2008 08:09 » 

Задача: Написать просмотрщик паролей, который позволяет видеть символы в окошке ввода пароля, вместо обычных звездочек.
Имеется решение задачи - hack password.zip. Но компилировать задачу не удается.
Просьба:
1. Если есть какие-то идеи относительно другого решения задачи чем hack password.zip вылаживать здесь или дать ссылку на ресурс.
2. Помочь откомпилировать уже готовую программу.
« Последнее редактирование: 26-12-2008 15:10 от Алексей1153++ » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 30-11-2008 10:15 » new

Содержимое архива компилируется на "Ура!" без всяких изменений.

--------------------Konfiguration: getPass - Win32 Debug--------------------
Ressourcen werden kompiliert...
Kompilierung läuft...
StdAfx.cpp
Kompilierung läuft...
getPass.cpp
getPassDlg.cpp
GoliEdit.cpp
Generieren von Code...
Linker-Vorgang läuft...

getPass.exe - 0 Fehler, 0 Warnung(en)

Проблема в другом... Посему тема не относится к данному разделу.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 30-11-2008 10:47 » 

Джон, у меня на VS 2003 не откомпилировалось - 2 ошибки преобразования типов функций - обработчиков сообщений.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 30-11-2008 12:32 » 

Это проект для VS6.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 30-11-2008 12:55 » 

проблема в этом:
      k = ( CEdit * ) WindowFromPoint(pt );

во первых, это вообще опасно - так делать. Только через сообщения надо! А если под курсором не CEdit , а ты по указателю туда полезешь как в CEdit ?
во вторых, не WindowFromPoint, а ChildWindowFromPoint :

Код:
void CGetPassDlg::Hello() 
{
POINT pt;
::GetCursorPos( &pt );
::MapWindowPoints(0,m_hWnd,&pt,1);

CWnd *pw=0;
HWND h = ::ChildWindowFromPoint(m_hWnd,pt);
if(h)
{
pw=CWnd::FromHandle(h);
if(pw)
{
CString txt="";
pw->GetWindowText(txt);
SetWindowText(txt);
}
}
pw=0;
h=0;
}

текст будет появлятся в заголовке диалога
« Последнее редактирование: 30-11-2008 13:09 от Алексей1153++ » Записан

v.korleone
Помогающий

ua
Offline Offline

« Ответ #5 : 02-12-2008 14:19 » 

Алексей1153++ благодарю за помощь в решении этой задачи. Все компилируется, но как работает данный exe-шник не пойму А черт его знает... Пробую на примере окна подключения в Интернет (где всегда звездочки) - цифры, вместо звездочек не отображаются, подскажите в чем дело.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 02-12-2008 17:35 » 

v.korleone, а у тебя только в твоём окне работает потому что )) попробуй не по сочетанию клавиш, а запустить таймер и раз в секунду, скажем, вызывать данную процедуру. Но
pw->GetWindowText(txt);
уже может не прокатить , делай через посылку сообщения WM_GETTEXT. Ну и всякие CWnd::FromHandle тоже не стОит использовать тут - в чужие окна безопаснее и правильнее лазить сообщениями винды

Цитата
lResult = SendMessage(      // returns LRESULT in lResult     (HWND) hWndControl,      // handle to destination control     (UINT) WM_GETTEXT,      // message ID     (WPARAM) wParam,      // = (WPARAM) () wParam;    (LPARAM) lParam      // = (LPARAM) () lParam; );   
Parameters

wParam
Specifies the maximum number of TCHARs to be copied, including the terminating null character.
Windows NT/2000/XP:ANSI applications may have the string in the buffer reduced in size (to a minimum of half that of the wParam value) due to conversion from ANSI to Unicode.

lParam
Pointer to the buffer that is to receive the text.
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 02-12-2008 17:59 » 

к примеру, такой код (вызывай по таймеру)

Код:
void CGetPassDlg::Hello() 
{
POINT pt;
char* pText=0;

::GetCursorPos(&pt);

HWND hParent= ::WindowFromPoint(pt);

::MapWindowPoints(0,hParent,&pt,1);

HWND hChild= ::ChildWindowFromPoint(hParent,pt);

if(!hChild)
{
hChild=hParent;
}

if(hChild)
{
int nLen=::GetWindowTextLength(hChild);
if(nLen<0xffff)
{
if(nLen)
{
pText=new char[nLen+2];
::memset(pText,0,sizeof(nLen+2));
::GetWindowText(hChild, pText, nLen+1);//+1 а не +2 !!!
}

SetWindowText(pText);
}

}

hChild=0;
hParent=0;

if(pText)
{
delete [] pText;
pText=0;
}
}

но для браузеровских окон он не желает работать, он их считает пустытми. Может, сообщение другое нужно какое то...
Кстати, Spy++ тоже не считает окошки в браузере окнами - хендлы не ищутся почему то ))
« Последнее редактирование: 02-12-2008 18:02 от Алексей1153++ » Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines