lanrenAPI 类库:实现鼠标穿透功能

头文件

#ifndef LANRENAPI_H
#define LANRENAPI_H
#include <windows.h>

class lanrenAPI
{
public:
    lanrenAPI();
    ~lanrenAPI();
    // 设置鼠标穿透
    static bool setWindowsMousePenetrate(HWND hwnd, bool setPenetrate = true);
};

#endif // LANRENAPI_H

Cpp 文件

#include "lanrenapi.h"

lanrenAPI::lanrenAPI()
{
}

lanrenAPI::~lanrenAPI()
{
}

bool lanrenAPI::setWindowsMousePenetrate(HWND hwnd, bool setPenetrate)
{
    bool ret;
    if (setPenetrate)
    {
        int a = GetWindowLongA(hwnd, GWL_EXSTYLE);
        a = a | 32 | 524288;
        ret = SetWindowLongA(hwnd, GWL_EXSTYLE, a);
    }
    else
    {
        ret = SetWindowLongA(hwnd, GWL_EXSTYLE, 524288);
    }
    return ret;
}

调用方法

在其他 Cpp 文件中,可以使用以下方法调用 setWindowsMousePenetrate 函数:

// 获取窗口句柄
HWND hwnd = (HWND)(this->winId());

// 设置鼠标穿透
lanrenAPI::setWindowsMousePenetrate(hwnd, true);

注意:

  • setWindowsMousePenetrate 是一个静态函数,需要通过类名 lanrenAPI 来调用。
  • 需要传入正确的参数,包括窗口句柄 hwnd 和是否设置穿透 truefalse

常见错误和解决方案

错误: lanrenAPI.setWindowsMousePenetrate(setWindowsMousePenetrate(HWND,true);

原因: 错误调用方式。

解决方案: 使用正确的调用方式,如上面示例所示。

错误: lanrenAPI::setWindowsMousePenetrate(hwnd,true);

原因: 错误调用方式。

解决方案: 使用正确的调用方式,如上面示例所示。

总结

lanrenAPI 类库提供了简单方便的鼠标穿透功能,只需要调用 setWindowsMousePenetrate 静态函数,传入正确的参数即可。本文档详细介绍了 lanrenAPI 的使用方法,并解释了常见的调用错误和解决方案。

C++ lanrenAPI 类库:实现鼠标穿透功能

原文地址: https://www.cveoy.top/t/topic/nrLT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录