staryprogramista Temat założony przez niniejszego użytkownika |
[WINAPI] Obsługa zdarzeń bez okienka » 2015-04-12 10:14:21 Witam, jak zrobić by możliwa była obsługa zdarzeń bez aktywnego okna, albo w ogóle bez niego(okno mi niepotrzebne)? Dotychczas próbowałem z uchwytem do pulpitu ale i tak nie działa. LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { } return DefWindowProc( hWnd, message, wParam, lParam ); }
int main() { MSG msg; while( GetMessage( & msg, NULL, 0, 0 ) ) { TranslateMessage( & msg ); DispatchMessage( & msg ); } return 0; }
|
|
pekfos |
» 2015-04-12 10:36:16 Skąd chcesz łapać komunikaty, skoro nie masz okna? Piszesz keyloggera..? |
|
Brunon3 |
» 2015-04-12 10:39:48 @up: Równie dobrze @Topic może pisać jakieś "menu szybkich skrótów klawiszowych" (jak na smartfonach), więc jest to oskarżenie bezpodstawne.
@Topic: Spróbuj podpiąć się pod pulpit z włączoną opcją "zawsze na wierzchu", tak by program był cały czas aktywny. Nie wiem czy to zadziała, tak na logikę kombinuje.
-BD. |
|
Fireho |
» 2015-04-12 10:57:49 |
|
staryprogramista Temat założony przez niniejszego użytkownika |
» 2015-04-12 11:04:01 @pekfo: nie @Brunon3: zrobiłem coś takiego i nie działa jednak: HWND Desktop = GetDesktopWindow(); SetWindowPos( Desktop, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
@Fireho: dzięki, przeczytam |
|
staryprogramista Temat założony przez niniejszego użytkownika |
» 2015-04-12 17:45:46 Poczytałem, popróbowałem ale nie mogę nic zdziałać z tymi hakami. Oto co napisałem: dllmain.cpp #include <Windows.h> #include "dll.h" #include "stdafx.h" #include <stdio.h>
HHOOK SysHook;
HINSTANCE hInstance;
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { hInstance =( HINSTANCE ) hModule; return true; }
LRESULT CALLBACK SysMsgProc( int code, WPARAM wParam, LPARAM lParam ) { if( code < 0 ) return CallNextHookEx( 0, code, wParam, lParam ); if( lParam == WM_RBUTTONDOWN ) { AllocConsole(); printf( "123\n" ); return true; } return CallNextHookEx( 0, code, wParam, lParam ); }
DllExport void RunStopHook() { SysHook = SetWindowsHookEx( WH_MOUSE, & SysMsgProc, hInstance, 0 ); }
dll.h #define DllExport extern "C" _declspec(dllexport)
DllExport void RunStopHook();
Program wykorzystujący dllke #include "Windows.h" #include <iostream> using namespace std;
typedef void( * VOIDFN )( void ); HINSTANCE hDll = NULL; VOIDFN funkcja = NULL;
int main() { MSG msg; hDll = LoadLibrary( "dllka.dll" ); funkcja =( VOIDFN ) GetProcAddress( hDll, "RunStopHook" ); if( hDll != NULL ) cout << "ok"; if( funkcja != NULL ) cout << "ok"; funkcja(); while( GetMessage( & msg, NULL, 0, 0 ) ) { TranslateMessage( & msg ); DispatchMessage( & msg ); } return 0; }
Coś się zapisuje do do "funkcja" i hDll bo wyświetla komunikaty, ale generalnie nie działa. |
|
DejaVu |
» 2015-04-13 13:43:40 Aplikacja poprawna politycznie nie powinna 'w tle' przechwytywać jakichkolwiek zdarzeń. |
|
Brunon3 |
» 2015-04-13 15:05:45 @DejaVu: Ale takie coś się czasami przydaje (np. interfejs skrótów w smartfonach).
@staryprogramista: Dodaj do kodu jakiś messagebox informujący o przechwytywaniu klawiszy na początek kodu, będzie po podejrzeniu.
-BD. |
|
« 1 » |