首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >钩子FindWindow

钩子FindWindow
EN

Stack Overflow用户
提问于 2012-01-22 01:37:50
回答 2查看 1.1K关注 0票数 2

我正在尝试使用Detours3.0来连接FindWindowA和FindWindowW。这两个函数成功挂钩,我可以看到请求的类和窗口标题。但是当我尝试访问任何单词时,比如

代码语言:javascript
运行
复制
if ( lpWindowName[0] == buf ) 

或者类似的东西:

代码语言:javascript
运行
复制
wcscpy(buf, lpWindowName);
memcpy(buf, lpWindowName, sizeof(lpWindowName));

我得到错误(异常在钩子程序)。我不能访问这个字符串,但我可以使用

代码语言:javascript
运行
复制
MessageBox(NULL,lpWindowName,lpClassName,MB_OK);

http://s017.radikal.ru/i421/1201/73/54fa9046a46c.png我什么都不懂...有错误的错误代码。我使用以下代码:

代码语言:javascript
运行
复制
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;
}

而且绳子没有损坏。所有工作..。为什么我不能检查或直接访问这两个参数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-22 05:46:31

检查文档中是否有FindWindow

两个字符串参数都可以是空的(意思是不关心),类名可以是一个原子。在这两种情况下,尝试取消对字符串的引用都会导致访问冲突(异常代码-1073741819=0xC0000005)。

票数 1
EN

Stack Overflow用户

发布于 2012-01-22 05:55:22

您得到的异常是EXCEPTION_ACCESS_VIOLATION (0xC0000005)。看看a1指的是什么。第一个猜测是a1正在做一个空指针引用?我会在调试器中运行它,并检查调用堆栈,看看错误的指针来自哪里。

你是如何设置绕道的?这可能是一个不正确的绕道的表现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8955099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档