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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2010, 22:15   #1
qwerc1
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 10
По умолчанию Хуки, проблема взятия адреса

Это спп:

Код:
///////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <conio.h>
#include <iostream.h>

 HHOOK  hHook;
 HOOKPROC  hpHookProc;
 HINSTANCE hHookDll;

int SetHook(BOOL bSet) // Функция устанавливает/снимает хук в зависимости от bSet
{


hHookDll = LoadLibrary("PracticeDLL.dll");
    if(bSet) // Если устанавливаем
    {
        if(hHookDll) // Если загружена библиотека
        {
           hpHookProc = GetProcAddress(hHookDll, "HookProc");
           cout<<hpHookProc<<":"<<GetLastError()<<endl;// Получим адрес хук-функции
            if(hpHookProc) // Если успешно получен адрес ф-ции,
            {
                // то установим хук
              hHook = SetWindowsHookEx(WH_GETMESSAGE, // тип хука
                        (HOOKPROC)hpHookProc, // хук-функция
                        hHookDll, // хендл библиотеки с хук-функцией
                        NULL);

                if(hHook == NULL) // Если хук не установился, вернем ошибку
                    return 3;
            }
            else
                return 1;

        }
        else
            return 2;
    }
    else // Если снимаем хук
        UnhookWindowsHookEx(hHook);

    return 0;
}

int main(int argc, char* argv[])
{
   char s[10];


        cout<<SetHook(true)<<endl;
        cin>>s;

        getch();

        cout<<SetHook(false)<<endl;
        getch();
        return 0;
}
//---------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////

это длл:
/////////////////////////////////////////////////////////////////// 
//---------------------------------------------------------------------------

#include <windows.h>

__declspec(dllexport) LRESULT CALLBACK HookProc(int iCode, WPARAM wParam, LPARAM lParam)

{// Если использовать это функцию для WH_GETMESSAGE, то что бы вы не нажимали будет писАться 'a' :-)
// iCode - сообщает хук-функции о том, что делать с данными
    if(iCode>=0) // Если iCode>=0, то данные нужно обработать
    {
        MSG *msg = (MSG*)lParam; // Сообщение, получаемое некоторым окном

        if(msg->message == WM_CHAR) // Если сообщение WM_CHAR, т.е. юзверь нажал кнопку на клавиатуре,
        {
            msg->wParam = (WPARAM)'a'; // то заменим введенный символ на 'a'
        }
    }
    else // Если iCode
        return CallNextHookEx(NULL, iCode, wParam, lParam);

    return 0;
}
///////////////////////////////////////////////////////////////////////////////////
Нверху, вылет функции по ошибке 1, т.е. адрес функции HookProc почему то не переадется, почему?

Последний раз редактировалось rpy3uH; 16.06.2010 в 20:50.
qwerc1 вне форума Ответить с цитированием
Старый 15.06.2010, 23:36   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

extern "C"
__declspec(dllexport) LRESULT CALLBACK HookProc(int iCode, WPARAM wParam, LPARAM lParam) ?
counter вне форума Ответить с цитированием
Старый 16.06.2010, 00:33   #3
qwerc1
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 10
По умолчанию

спасибо, заработало.

Вопрос терь такой. Почему када в cin вводу строку, он не меняет как задумано?
qwerc1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хуки в Windows JeyKip Win Api 11 09.05.2010 00:33
Программа, использующая хуки anGeee Win Api 1 11.12.2009 20:59
dll-Хуки и получение результата в exe Izhic Win Api 2 15.10.2009 18:39
ListView и хуки 7KByte Win Api 0 10.07.2009 22:21
Глобальные хуки Zeraim Win Api 2 24.05.2008 16:00