• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Лажа С Enumchildwindows

  • Автор темы Slawutich
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Slawutich

Вот такой у меня код

Код:
BOOL CALLBACK CClickDlg::MyEnumChildProc(HWND hwnd, LPARAM lParam)
{
CWnd *h;
CString str;
h=(CWnd *)hwnd;
h->GetWindowText(str);
m_List.AddString(str);
GetClassName(hwnd,(LPWSTR)&str,MAX_PATH);
m_List.AddString(str);
return 1;
}

void CClickDlg::OnBnClickedButton1()
{

CWnd *hWnd;
hWnd=FindWindow(_T("IEFrame"),NULL);

for(int i=0;i<5;i++)
{
EnumChildWindows((HWND)hWnd, MyEnumChildProc, NULL);
}

}
а компилятор мне пишет вот это
error C3867: 'CClickDlg::MyEnumChildProc': function call missing argument list; use
'&CClickDlg::MyEnumChildProc' to create a pointer to member

Подскажите плз чо не правильно
 
Z

zubr

Функция MyEnumChildProc должна быть статической или просто глобальной.
 
S

Slawutich

Вот так я объявил функцию в классе

Код:
static BOOL CALLBACK MyEnumChildProc(HWND hwnd, LPARAM lParam);

И вот так переписал фунуцию
Код:
BOOL CALLBACK CClickDlg::MyEnumChildProc(HWND hwnd, LPARAM lParam)
{
CWnd *ChildWnd, *DialogWnd;
CListBox *LB;
CString str;

DialogWnd=(CDialog *)lParam;
LB=(CListBox *)DialogWnd->GetDlgItem(IDC_LIST1);
ChildWnd=(CWnd *)hwnd;

ChildWnd->GetWindowText(str);
LB->AddString(str);

GetClassName(hwnd,(LPWSTR)&str,MAX_PATH);
LB->AddString(str);

return 1;
}
void CClickDlg::OnBnClickedButton1()
{

CWnd *hWnd;
hWnd=FindWindow(_T("IEFrame"),NULL);

for(int i=0;i<5;i++)
{
EnumChildWindows((HWND)hWnd, MyEnumChildProc, (LPARAM)m_hWnd);

}
}
Ошибка пропала, компилируется нормально но при ваполнении в функцию MyEnumChildProc
не заходит и соответственно не чо в листбокс не выводит а тут что не так? Подскажите пожалуйста.
 
M

mms

hWnd=FindWindow(_T("IEFrame"),NULL); - тут случаем не нул возвращается?
 
S

Slawutich

hWnd=FindWindow(_T("IEFrame"),NULL); - тут случаем не нул возвращается?
Нет потому что делаю так все работает окно сворачивается
Код:
hWnd=FindWindow(_T("IEFrame"),NULL);
hWnd->CloseWindow();
 
S

Slawutich

Уххх Блин наконецтаки разобрался действительно проблемма была из за передаваемого хендла
но возникла еще одна проблема нашел значит нужное дочернее окно и посылаю сообщение
Код:
::PostMessage(hwnd,WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(760,527-112));

::PostMessage(hwnd,WM_LBUTTONUP,0000, MAKELPARAM(760,527-112));

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

Что не так? Подскажите плз как правильно послать сообщение о клике мыши?
 
Z

zubr

Попробуй вместо ::postMessage(hwnd,WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(760,527-112));

::postMessage(hwnd,WM_LBUTTONUP,0000, MAKELPARAM(760,527-112));


::SendMessage(hwnd,WM_LBUTTONDOWN, 0, 0);

::SendMessage(hwnd,WM_LBUTTONUP,0, 0);
 
S

Slawutich

Попробуй вместо ::postMessage(hwnd,WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(760,527-112));

::postMessage(hwnd,WM_LBUTTONUP,0000, MAKELPARAM(760,527-112));


::SendMessage(hwnd,WM_LBUTTONDOWN, 0, 0);

::SendMessage(hwnd,WM_LBUTTONUP,0, 0);

Нет не работает, к томуже не указаны координаты куда иммено в окне кликнуть, а это имеет значение.

Проверял я Spy++ -ем какие сообщения получает окно, так вот мое посылаемое сообщение идентично с реальным кликом, я вот думаю может просто надо еще какието сообщения передать
 
S

Slawutich

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!