Mã:
#include "stdafx.h"#include "Win32_Iczelion_Hook.h"#include "Win32_Iczelion_HookDLL.h" #define WM_MOUSEHOOK WM_USER+10 #define MAX_LOADSTRING 100 // Global Variables:HINSTANCE hInst; // current instanceTCHAR szTitle[MAX_LOADSTRING]; // The title bar textTCHAR szWindowClass[MAX_LOADSTRING]; // the main window class nameHWND hWndEHandle;HWND hWndEClassName;HWND hWndEWndProc;HWND hWndBHook;HWND hWndBExit;HHOOK hHook;BOOL HookFlag = FALSE; // Forward declarations of functions included in this code module:ATOM MyRegisterClass(HINSTANCE hInstance);BOOL InitInstance(HINSTANCE, int);LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow){ UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: Place code here. MSG msg; HACCEL hAccelTable; // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_WIN32_ICZELION_HOOK, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32_ICZELION_HOOK)); // Main message loop: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam;} ATOM MyRegisterClass(HINSTANCE hInstance){ WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32_ICZELION_HOOK)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WIN32_ICZELION_HOOK); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassEx(&wcex);} BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){ HWND hWnd; hInst = hInstance; // Store instance handle in our global variable hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 600, 300, NULL, NULL, hInstance, NULL); hWndEHandle = CreateWindowEx(NULL, L"Edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL, 100,35,345,25,hWnd,(HMENU)IDC_HANDLE,hInstance,NULL); hWndEClassName = CreateWindowEx(NULL, L"Edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL, 100,65,200,25,hWnd,(HMENU)IDC_CLASSNAME,hInstance,NULL); hWndEWndProc = CreateWindowEx(NULL, L"Edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL, 100,95,200,25,hWnd,(HMENU)IDC_WNDPROC,hInstance,NULL); hWndBHook = CreateWindowEx(NULL, L"Button", L"Hook", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 305,65,140,25,hWnd,(HMENU)IDC_HOOK,hInstance,NULL); hWndBExit = CreateWindowEx(NULL, L"Button", L"Exit", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 305,95,140,25,hWnd,(HMENU)IDC_EXIT,hInstance,NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE;} LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; LPWSTR buffer = 0; RECT rect; switch (message) { case WM_CREATE: GetWindowRect(hWnd, &rect); SetWindowPos(hWnd, HWND_TOPMOST, rect.left, rect.top, rect.right, rect.bottom, SWP_SHOWWINDOW); break; case WM_CLOSE: if (HookFlag==TRUE) UninstallHook(); DestroyWindow(hWnd); case WM_MOUSEHOOK: { wchar_t buffer[256]; wsprintfW(buffer, L"%p", wParam); SetDlgItemText(hWnd, IDC_HANDLE, buffer); GetClassName((HWND)wParam, buffer, 128); SetDlgItemText(hWnd, IDC_CLASSNAME, buffer); DWORD buffer2 = GetClassLong((HWND)wParam,GCL_WNDPROC); wsprintfW(buffer, L"%p", buffer2); SetDlgItemText(hWnd, IDC_WNDPROC, buffer); break; } case WM_COMMAND: { wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: if (wmEvent==BN_CLICKED) { if (wmId==IDC_HOOK) { if (HookFlag==FALSE) { if (InstallHook(hWnd)) { HookFlag = TRUE; SetDlgItemText(hWnd, IDC_HOOK, L"Un hook"); } } else { UninstallHook(); SetDlgItemText(hWnd,IDC_HOOK,L"Hook"); HookFlag = FALSE; SetDlgItemText(hWnd,IDC_CLASSNAME,NULL); SetDlgItemText(hWnd,IDC_HANDLE,NULL); SetDlgItemText(hWnd,IDC_WNDPROC,NULL); } } else if (wmId==IDC_EXIT) { SendMessage(hWnd,WM_CLOSE,0,0); } } switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; } case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;} // Message handler for about box.INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE;}
Ai có thể giúp em với.
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...