Я пытаюсь подключить FindWindowA и FindWindowW, используя Detours 3.0. Эти две функции успешно подключены, и я вижу запрошенный класс и заголовок окна. Но когда я пытаюсь получить доступ к любому слову, например,
if ( lpWindowName[0] == buf )
или что-то в этом роде:
wcscpy(buf, lpWindowName);
memcpy(buf, lpWindowName, sizeof(lpWindowName));
Я получаю сообщение об ошибке (исключение в подключенной программе). У меня нет доступа к этой строке, но я могу прочитать ее, используя
MessageBox(NULL,lpWindowName,lpClassName,MB_OK);
http://s017.radikal.ru/i421/1201/73/54fa9046a46c.png Я ничего не понимаю ... неверный код ошибки. Я использую этот код:
int filter(DWORD code, struct _EXCEPTION_POINTERS *ep) {
char buf[MAX_PATH] = {0};
sprintf(buf,"Exception code: %d", code);
MessageBox(NULL,buf,"Error",MB_OK);
return EXCEPTION_EXECUTE_HANDLER;
}
HWND __stdcall Mine_FindWindowW(LPCWSTR a0,
LPCWSTR a1)
{
__try
{
if (a1[0] == L'a')
return NULL;
}
__except(filter(GetExceptionCode(), GetExceptionInformation())){
}
HWND rv = 0;
__try {
rv = Real_FindWindowW(a0, a1);
} __finally {
};
return rv;
}
И строка не повреждена. Все работает ... почему я не могу проверить или иметь прямой доступ к этим двум параметрам?