C++ lanrenAPI 库:设置鼠标穿透功能
#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函数用于根据窗口标题查找窗口句柄。- 将
"窗口标题"替换为你的窗口实际标题。
原文地址: https://www.cveoy.top/t/topic/nrKR 著作权归作者所有。请勿转载和采集!