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;}
Pallet nhựa Long An đã trở thành một trong những lựa chọn phổ biến cho nhu cầu vận chuyển và lưu trữ hàng hóa trong nhiều ngành công nghiệp. Với đặc tính nhẹ nhàng, chắc chắn và dễ vận chuyển, các...
Thanh lý pallet nhựa Long An giá rẻ