kt1117 Temat założony przez niniejszego użytkownika |
Haki » 2011-05-07 10:36:22 Czemu ten kod nie działa? #include <windows.h>
HHOOK g_MyHook = NULL;
HWND hwnd;
LRESULT CALLBACK AltF4Proc( int code, WPARAM wParam, LPARAM lParam ); LRESULT CALLBACK WindowProcedure( HWND, UINT, WPARAM, LPARAM );
char szClassName[] = "CodeBlocksWindowsApp";
int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow ) { MSG messages; WNDCLASSEX wincl; wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof( WNDCLASSEX ); wincl.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wincl.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); wincl.hCursor = LoadCursor( NULL, IDC_ARROW ); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground =( HBRUSH ) COLOR_BACKGROUND; if( !RegisterClassEx( & wincl ) ) return 0; hwnd = CreateWindowEx( 0, szClassName, "Code::Blocks Template Windows App", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hThisInstance, NULL ); g_MyHook = SetWindowsHookEx( WH_KEYBOARD, & AltF4Proc, NULL, GetThreadId( GetCurrentThread() ) ); ShowWindow( hwnd, nCmdShow ); while( GetMessage( & messages, NULL, 0, 0 ) ) { TranslateMessage( & messages ); DispatchMessage( & messages ); } return messages.wParam; }
LRESULT CALLBACK WindowProcedure( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_DESTROY: UnhookWindowsHookEx( g_MyHook ); PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, message, wParam, lParam ); } return 0; }
LRESULT CALLBACK AltF4Proc( int code, WPARAM wParam, LPARAM lParam ) { if( code < 0 ) return CallNextHookEx( 0, code, wParam, lParam ); if( wParam == VK_F4 &&( lParam & 536870912 ) ) { MessageBox( hwnd, "Nie zamkniesz mnie tak łatwo!", NULL, MB_ICONEXCLAMATION ); return 1; } return CallNextHookEx( 0, code, wParam, lParam ); }
Jest to kod żywcem wzięty z kursu.(No może nie całkiem żywcem, trzeba go było poskładać) Kompilator wyrzuca mi błąd, że nie zna funkcji:"GetThreadId"> |
|
malan |
» 2011-05-07 10:47:33 Na jakim systemie operacyjnym pracujesz towarzyszu? |
|
kt1117 Temat założony przez niniejszego użytkownika |
» 2011-05-07 10:57:48 Na Windows XP, wiem, że to działa tylko na Windowsach, bo to WinApi. |
|
malan |
» 2011-05-07 11:07:59 A, że minimalna wersja systemu pod którą dostępna jest ta funkcja to Windows Vista? |
|
kt1117 Temat założony przez niniejszego użytkownika |
» 2011-05-07 11:11:48 Szkoda, czyli na XP nie idzie zakładać haków? |
|
malan |
» 2011-05-07 11:15:18 |
|
kt1117 Temat założony przez niniejszego użytkownika |
» 2011-05-07 11:22:07 Dałem w to 0, bo tam pisało, że jeśli dam zero to powiąże się z tym samym oknem, co wątek wywołujący, niestety okno da się wyłączyć. E:Co mam tam podać? Identyfikator wątku czyli co, uchwyt do okna? |
|
malan |
» 2011-05-07 21:11:05 Dobrze zrobiłeś wstawiając tam 0 (zero). Tylko sprawdź jeszcze, czy hak został założony poprawnie. |
|
« 1 » 2 |