私はDetours 3.0を使用してFindWindowAとFindWindowWをフックしようとしています。この2つの関数は正常にフックし、要求されたクラスとウィンドウのタイトルを見ることができます。私はフックFindWindow
if (lpWindowName[0] == buf)
またはそのような何かのように任意の単語いくつかにアクセスしようとすると、しかし:
wcscpy(buf, lpWindowName);
memcpy(buf, lpWindowName, sizeof(lpWindowName));
私はエラー(フック・プログラムでexeption)を取得します。私は、この文字列へのアクセスを持ってカントが、私はそれは私が...何も理解していない、間違ったエラーコードを持っていけない
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;
}
そして文字列は壊れません。すべての仕事...なぜ私はこれらの2つのパラメータをチェックしたり直接アクセスしたりできないのですか?
それはキラーポケだろう。 WM_SETTEXTメッセージを送信する必要があります。 –
WM_SETTEXT? o_O – user922871