Вот так я запускаю ловушку
if (MH_CreateHookApiEx(L"user32", "SetWindowLongW", &MySetWindowLongW, (LPVOID*)&oSetWindowLongW, nullptr) != MH_OK)
{
std::cout << "MHook Fail To Install Hook." << std::endl;
goto exit;
}
if (MH_EnableHook(&SetWindowLongW) != MH_OK)
{
std::cout << "MHook Fail To Enable Hook." << std::endl;
goto exit;
}
typedef LONG(WINAPI* _MySetWindowLongW)(HWND, int, LONG);
_MySetWindowLongW oSetWindowLongW = nullptr;
LONG MySetWindowLongW(
HWND hWnd,
int nIndex,
LONG dwNewLong
)
{
return oSetWindowLongW(hWnd, nIndex, dwNewLong);
}
Работает ловушка, НО проблема в том, что после первого запуска c до MySetWindowLongW
в Visual Studio я получаю has triggered a breakpoint.
после функции fini sh.
Я думаю, что это стек или разговор. Я действительно не знаю.
Но я попробовал с CreateWindowExW
, это работает нормально. Проблема только с SetWindowLongW
.