ошибка при создание класса
Вложений: 1
написал класс:
Скрытый текст
Код:
#include<windows.h>
class Hook{
public:
void SetHook(){
HINSTANCE hinstDLL = GetModuleHandle(NULL);
if (!(_hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyProc, hinstDLL,0))){
MessageBox(NULL, "Failed to install hook!", "Error", MB_ICONERROR); }
}
void UnSetHook(){
UnhookWindowsHookEx(_hook);
}
int GetVKCode(){
return code;
}
bool GetKey(){
return key;
}
void SetKey(bool keym){
key=keym;
}
void Update(){
PeekMessage(&msg,NULL,0,0,0);
}
void uncode(){
code=0;
}
private:
HHOOK _hook;
HINSTANCE hinstDLL;
static int code;
static bool key;
MSG msg;
static LRESULT CALLBACK KeyProc(int ncode,WPARAM wParam,LPARAM lParam){
KBDLLHOOKSTRUCT * pStruct = (KBDLLHOOKSTRUCT *)lParam;
code=pStruct->vkCode;
if(wParam==WM_KEYUP){key=false;code=0;}else{key=true;}
return CallNextHookEx(_hook,ncode,wParam,lParam);
}
};
компилятор выдает ошибку:
Помогите пожалуйста!
|
Вы в статическом методе
Цитата:
Цитата амир-05
static LRESULT CALLBACK KeyProc(int ncode,WPARAM wParam,LPARAM lParam) »
|
используете поле _hook, которое нестатическое.
Если у вашего класса вызвать Hook::KeyProc(...), то отуда компилятор должен взять _hook?
|
спс
но я уже перешёл на глобальные хуки и написал следующий код:
main.cpp:
Код:
#include<windows.h>
#include<iostream>
using namespace std;
int main(){
HOOKPROC func;
HHOOK _hook;
int ncode=15;
WPARAM wParam;
LPARAM lParam;
MSG msg;
HINSTANCE hinstDLL;
hinstDLL=LoadLibrary("dll.dll");
(FARPROC &)func = GetProcAddress(hinstDLL,"KeyProc@12");
_hook=SetWindowsHookEx(WH_KEYBOARD,func,hinstDLL,0);
while(1){
PeekMessage(&msg,NULL,0,0,0);
}
}
dll.cpp:
Код:
#include<windows.h>
#include<iostream>
#define DllExport extern"C" __declspec(dllexport)
HHOOK _hook;
DllExport LRESULT CALLBACK KeyProc(int ncode,WPARAM wParam,LPARAM lParam){
std::cout<<wParam;
std::cout<<123;
}
но не работает:может я что то не дописал или упустил,не пойму.Помогите пожалуйста))
|
Время: 17:21.
© OSzone.net 2001-