MagSetWindowFilterList 滤除开始菜单
时间: 2023-12-02 14:04:47 浏览: 184
`MagSetWindowFilterList`函数是用来设置句柄过滤器列表的函数,可以用于指定哪些窗口不应该被放大镜放大。如果想要滤除开始菜单,可以将其句柄添加到过滤器列表中。
以下是一个示例代码,演示如何使用`MagSetWindowFilterList`函数滤除开始菜单:
```cpp
#include <windows.h>
#include <magnification.h>
#pragma comment(lib, "Magnification.lib")
int main()
{
// 获取开始菜单句柄
HWND hStartMenuWnd = FindWindow(_T("Windows.UI.Core.CoreWindow"), _T("Start"));
// 创建放大镜句柄
HINSTANCE hInstMag = LoadLibrary(_T("Magnification.dll"));
if (!hInstMag) {
return 1;
}
PFNMAGINITIALIZE pfnMagInitialize = (PFNMAGINITIALIZE)GetProcAddress(hInstMag, "MagInitialize");
PFNMAGSETWINDOWFILTERLIST pfnMagSetWindowFilterList = (PFNMAGSETWINDOWFILTERLIST)GetProcAddress(hInstMag, "MagSetWindowFilterList");
if (!pfnMagInitialize || !pfnMagSetWindowFilterList) {
FreeLibrary(hInstMag);
return 1;
}
BOOL ret = pfnMagInitialize();
if (!ret) {
FreeLibrary(hInstMag);
return 1;
}
// 将开始菜单添加到过滤器列表中
HWND hwndArray[1] = { hStartMenuWnd };
ret = pfnMagSetWindowFilterList(hwndArray, 1);
// 等待用户按下任意键,结束程序
system("pause");
FreeLibrary(hInstMag);
return 0;
}
```
在上面的代码中,我们首先使用`FindWindow`函数获取开始菜单的句柄,然后加载Magnification.dll动态链接库,并使用`GetProcAddress`函数获取`MagInitialize`和`MagSetWindowFilterList`函数的入口地址。接着,我们调用`MagInitialize`函数初始化放大镜,然后将开始菜单的句柄添加到过滤器列表中,这样放大镜就不会放大开始菜单了。最后,我们等待用户按下任意键,然后卸载Magnification.dll动态链接库并结束程序。
注意:上述代码中使用的窗口类名和窗口标题可能在不同的Windows版本中有所不同,需要根据具体情况进行调整。
阅读全文