#ifndef LANRENAPI_H #define LANRENAPI_H #include 'windows.h' #include 'winuser.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 文件中无法这样调用?

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

lanrenAPI.setWindowsMousePenetrate(setWindowsMousePenetrate(HWND, true);

正确的调用方式:

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

lanrenAPI::setWindowsMousePenetrate(hwnd, true);

原因:

  • lanrenAPI 是一个类,你需要使用 :: 运算符来访问类的静态成员函数。
  • 在调用 setWindowsMousePenetrate 函数时,你需要传递正确的参数:
    • hwnd:窗口句柄
    • true:设置为鼠标穿透

示例:

#include "lanrenapi.h"

int main()
{
    // 获取窗口句柄
    HWND hwnd = FindWindowA(NULL, "窗口标题");

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

    return 0;
}

注意:

  • 确保你已经包含了 lanrenapi.h 头文件。
  • FindWindowA 函数用于根据窗口标题查找窗口句柄。
  • "窗口标题" 替换为你的窗口实际标题。
C++ lanrenAPI 库:设置鼠标穿透功能

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

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