Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2018, 15:12   #1
korsaj
 
Регистрация: 19.05.2014
Сообщений: 4
По умолчанию Хук на скролл чужого окна - C++ WinAPI

Подскажите, что я делаю не так. В ддл обрабатываю сообщения от скролла. При манипуляции со скроллами сообщение ловится, но значения nPos всегда хаотичные. Подозреваю что неправильно получаю структуру SCROLLINFO, но как именно неправильно ума не приложу. Ниже код ловушки из длл.
Код:
LRESULT ScrollHookProc(int code, WPARAM wParam, LPARAM lParam )
{
    if (code < 0)
    {
        return CallNextHookEx(g_hHook, code, wParam, lParam);
    }
    
    if (code == MSGF_SCROLLBAR)
    {
        UINT Temp = pCW->message;
 
        SCROLLINFO *si = (SCROLLINFO*)lParam;
        int nPos = si->nPos;
 
        wchar_t buffer[256];
        wsprintfW(buffer, L"%d", nPos);
 
        if (Temp == SB_HORZ)
        {
            MessageBoxW(NULL, buffer, L"DllMain HSCROLL", MB_OK);
        }
        else if (Temp == SB_VERT)
        {
            MessageBoxW(NULL, buffer, L"DllMain VSCROLL", MB_OK);
        }
    }
    return ::CallNextHookEx(g_hMouseHook, code, wParam, lParam);
}
korsaj вне форума Ответить с цитированием
Старый 01.02.2018, 16:06   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Прочитайте описание структуры SCROLLINFO и в частности для чего служит fMask.
waleri вне форума Ответить с цитированием
Старый 01.02.2018, 18:20   #3
korsaj
 
Регистрация: 19.05.2014
Сообщений: 4
По умолчанию

Спасибо' ща прочту еще разок, но я вроде уже догадался. главное чтобы правильно
korsaj вне форума Ответить с цитированием
Старый 01.02.2018, 22:59   #4
korsaj
 
Регистрация: 19.05.2014
Сообщений: 4
По умолчанию

Тыкался, тыкался, но ничего не получилось, видимо потому что не понял.
У меня инжектированная длл, устанавливается хук WH_MSGFILTER.
В ScrollHookProc(int code, WPARAM wParam, LPARAM lParam ) его ловлю. Но как разобрать пришедшие данные так и не понял.
korsaj вне форума Ответить с цитированием
Старый 01.02.2018, 23:48   #5
korsaj
 
Регистрация: 19.05.2014
Сообщений: 4
По умолчанию

"Дотыкался". Нужно было вначале получить MSG структуру, а уж из нее получить указатель на окно со скроллом и лишь только тогда можно заполнить структуру SCROLLINFO.
korsaj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хук Com winApi Biohazard Win Api 2 19.03.2013 22:19
хук на появление нового окна D_E_N Win Api 10 07.04.2012 21:39
WinApi. Как создать скролл бар дочернего окна размером с 1/4 этой области? 13yulia13 Помощь студентам 0 29.02.2012 19:36
хук в WinApi DarkMage Win Api 1 21.04.2011 23:11