Mã:
#include "windows.h" typedef VOID(*LOADPROC)(HHOOK hHook); HWND hWindow;HINSTANCE hInst;HHOOK hHook;BOOL setHook();BOOL unHook(HHOOK hHook); enum { ID_LABEL = 1,ID_IMAGE,ID_EDIT,ID_LIST,ID_BUTTON,ID_COMBO, ID_BUTTON2 }; LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInst;TCHAR szAppName[] = TEXT("SDI Frame");TCHAR szWinClass[] = TEXT("WIN_CLASS"); HWND button1,button2; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow){ MSG msg; WNDCLASS wc; HWND hwnd; g_hInst = hInstance; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hInstance = hInstance; wc.lpfnWndProc = WinProc; wc.lpszClassName = szWinClass; wc.lpszMenuName = NULL; wc.style = CS_HREDRAW | CS_VREDRAW; if( !RegisterClass(&wc)) { MessageBox(NULL, TEXT("Error registering class"), TEXT("ERROR"), MB_OK); return 0; } hwnd = CreateWindow(szWinClass, szAppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 250, 200, (HWND) NULL, (HMENU) NULL, (HINSTANCE) hInstance, (void *) NULL); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, (HWND) NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; int iD; int i; switch(msg){ case WM_CREATE: button1 = CreateWindow(L"Button",L"start hook",BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE ,50,50,150,25,hwnd,(HMENU)ID_BUTTON,g_hInst,0); button2 = CreateWindow(L"Button",L"end hook",BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE ,50,100,150,25,hwnd,(HMENU)ID_BUTTON2,g_hInst,0); case WM_PAINT: hdc = BeginPaint(hwnd, &ps); EndPaint(hwnd, &ps); return 0; case WM_COMMAND: iD = LOWORD(wParam); if (iD == ID_BUTTON) { if (setHook()) { MessageBox(hwnd, L"hook succeed", L"box", MB_OK); } else { MessageBox(hwnd, L"Err hook!", L"box", MB_OK); } } else if (iD=ID_BUTTON2) { if (unHook(hHook)) { MessageBox(hwnd, L"UnHook ", L"box", MB_OK); } else { MessageBox(hwnd, L"Err unhook!", L"box", MB_OK); } } break; case WM_CHAR: i = wParam; break; case WM_DESTROY: PostQuitMessage(0); break; case WM_CLOSE: DestroyWindow(hwnd); break; }return DefWindowProc(hwnd, msg, wParam, lParam);} //// setuphook BOOL setHook(){ if (LoadLibraryW(L"..\\..\\DLL\\Debug\\DLL.dll") == NULL) { MessageBox(0, L"Can not load DLL file.",L"Error", 0); return FALSE; } HMODULE hDLL = GetModuleHandle(L"DLL"); if (hDLL == NULL) { return FALSE; } hHook = SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetProcAddress(hDLL,"GetMsgProc"),hDLL, 0); if (hHook == NULL) { return FALSE; } LOADPROC fPtrFcnt; fPtrFcnt = (LOADPROC)GetProcAddress(hDLL,"SetGlobalHookHandle"); if (fPtrFcnt == NULL) { return FALSE; } fPtrFcnt(hHook); return TRUE; } BOOL unHook(HHOOK hHook){ return UnhookWindowsHookEx(hHook);}
còn đây là code DLL
Mã:
#include <Windows.h> #pragma data_seg("SHARED_DATA")#pragma data_seg()HHOOK hGobalHook=NULL; __declspec(dllexport) LRESULT CALLBACK GetMsgProc(int nCode,WPARAM wParam,LPARAM lParam){ if (nCode<0) { return CallNextHookEx(hGobalHook,nCode,wParam,lParam); } MSG* msg=(MSG*)lParam; if (msg->message==WM_CHAR) { if ((0x61<=msg->wParam)&&(msg->wParam<=0x7A)) { msg->wParam=msg->wParam - 0x20; } } return CallNextHookEx(hGobalHook,nCode,wParam,lParam);} __declspec(dllexport) void SetGlobalHookHandle(HHOOK hHook){ hGobalHook=hHook;}
Rocket 1h là thực phẩm chức năng giúp tăng cường sinh lý nam có nguồn gốc hoàn toàn từ dược liệu tự nhiên. Rất nhiều nam giới đã tuyển lựa Rocket 1h như một phương thuốc hữu hiệu để cải thiện tình...
Nguyên nhân của cặp đôi nam nữ mua...