【求助】AttachThreadInput 返回值为0,GetLastError取得的错误码为5(访问拒绝),求解决方案

时间:2020-12-11 20:05:13

    // 获取创建前台窗口的线程
    DWORD dwThread = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
    // 将前台窗口线程贴附到当前线程(也就是程序A中的调用线程)- 共享目标窗口的输入队列
    BOOL bRet = AttachThreadInput(dwThread, GetCurrentThreadId(), TRUE);
    if(bRet ==0) 
    {
        DWORD lastError = GetLastError();   //    查看错误码是  5 - 拒绝访问
        return;
    }
    // 获取焦点窗口句柄
    HWND hFocus = GetFocus();
    // 解除贴附
    AttachThreadInput(dwThread, GetCurrentThreadId(), FALSE);
    // 发送消息
    PostMessage(hFocus, WM_KEYDOWN, VK_TAB, 0);


之前用这个逻辑一直好好的,直到碰到某一个产品

窗口类名是大名鼎鼎的    Chrome_WidgetWin_1

这个是Chrome UI框架的安全机制导致的么,有没有解决方法?



求大神支招

2 个解决方案

#1


的确是权限的问题,右键使用管理员权限运行后无此问题。

#1


的确是权限的问题,右键使用管理员权限运行后无此问题。