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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2009, 11:59   #1
Murzilka153
Новичок
Джуниор
 
Регистрация: 16.10.2009
Сообщений: 1
По умолчанию Хук и потоки

Помогите справится вот с такой задачей: Необходимо написать хук на клаву, чтоб перехватывал все нажатия клавы (глобальные). (Это я сделал). А теперь нада чтобы все эти нажатия передавались в блокнот, тоесть типо в одном блокноте пишешь, в других 3-ех дублируется.

Вывод пока сделал в label
Код C++
Код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(buffer[0]==0)return;
if(buffer[0]!=simvol)
        {
        String last=Label1->Caption;
        String s=String(buffer[0]);
        last+=s;
        simvol=buffer[0];
        Label1->Caption=last;
        }
buffer[0]=0;
}

Установка хука
Код C++
Код:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
memory=new InterProcMemory("GlobalHook","");
buffer=(char*)memory->Base;
buffer[0]=0;
String path=ExtractFilePath(Application->ExeName)+"DllProject1.dll";
lib=LoadLibrary(path.c_str());
if(lib==NULL)
        {
        ShowMessage("DLL не загружена");
        return;
        }
HOOKPROC hookproc=(HOOKPROC)GetProcAddress(lib,"@KeyboardProc$qqsiuil");
if(hookproc==NULL)
        {
        ShowMessage("Не найдена функция hookproc");
        return;
        }
HHOOK hook=SetWindowsHookEx(WH_KEYBOARD,hookproc,lib,0);
}

Ну и сам хук
Код C++
Код:
InterProcMemory*memory; 
HHOOK h;
char*buffer;

__declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
buffer[0]=(char)wParam;
CallNextHookEx(h,code,wParam,lParam);
}
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
        memory=new InterProcMemory("GlobalHook","");
        buffer=(char*)memory->Base;
        return 1;
}

Подскажите как реализвать передачу данных в другие окна?
Одновременно...
Murzilka153 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сервис и хук francyz26rus Win Api 0 19.08.2009 13:51
Хук на комбинацию W0LF Win Api 9 26.07.2009 10:33
Хук на клаву HellMercenaries Общие вопросы Delphi 3 23.07.2009 21:23
локальный хук vitalik007 Win Api 3 16.05.2008 09:08
хук rpy3uH Win Api 0 30.10.2006 20:47