Здравствуйте уважаемые господа программисты. Сразу скажу - я новичок в C++ и многого не знаю, по этому не кидайте тапками.
У меня есть задача - сделать локальный хук мыши который работает только в процессе в который был произведен инжект моей DLL созданной на C++. Под этим я подразумеваю что данный хук будет работать во всех окнах которые принадлежат этому процессу.
Я пытался вникать и читать документацию, гуглить, но мне попадались лишь вопросы на эту тему, в них ничего не работало.
Как я понял - данный хук делается при помощи SetWindowsHookEx. Ниже находится пример моего кода который у меня получился, но он делает глобальный хук, а еще как-то криво работает ( из-за него виснет окна которые принадлежат процессу в который был произведен инжект ).
HHOOK MouseHook;
LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam)
{
MOUSEHOOKSTRUCTEX* mhs = (MOUSEHOOKSTRUCTEX*)lParam;
if (wParam == WM_RBUTTONUP)
{
MessageBoxA(0, "test", "test", MB_OK | MB_SYSTEMMODAL);
}
return CallNextHookEx(MouseHook, code, wParam, lParam);
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD _reason, DWORD lpReserved)
{
if (_reason == DLL_PROCESS_ATTACH)
{
MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, NULL);
MSG message;
while (GetMessage(&message, NULL, 0, 0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
}
return true;
}
Объясните пожалуйста как работает данный код и как сделать правильно сделать локальный хук.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Только начал программировать на C++, в итоге ничего не понять, как начатьПопытался установить на Visual Studio Code и C++, и code runner, в итоге написал простенькую...
Между городом A и гоордом B проложена единственная дорога, на которой построено N остановочных пунктовОбычный автобусный маршрут из A в B предусматривает...
if string обработать может, а switch не можетно использовать if, как-то не красиво