//1. 锁定任务栏并置灰
BOOL LockTaskBar()
{
BOOL bSuc = FALSE;
DWORD dwDisposition = REG_CREATED_NEW_KEY;
HKEY hCheckKey;
//勾选 锁定任务栏(不能先置灰再勾选)
if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", 0, REG_NONE, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS | KEY_WOW64_64KEY, NULL, &hCheckKey, &dwDisposition))
{
DWORD dwValue = 0;
if (ERROR_SUCCESS == RegSetValueExA(hCheckKey, "TaskbarSizeMove", 0, REG_DWORD, (BYTE*)&dwValue, sizeof(DWORD)))
{
bSuc = TRUE;
}
}
RegCloseKey(hCheckKey);
HKEY hLockKey;
//锁定任务栏置灰
if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", 0, REG_NONE, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS | KEY_WOW64_64KEY, NULL, &hLockKey, &dwDisposition))
{
DWORD dwValue = 1;
if (ERROR_SUCCESS == RegSetValueExA(hLockKey, "LockTaskbar", 0, REG_DWORD, (BYTE*)&dwValue, sizeof(DWORD)))
{
bSuc = TRUE;
}
}
RegCloseKey(hLockKey);
return bSuc;
}
//2. 当explorer桌面进程重新启动时,重启托盘图标
LRESULT MessageProc(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
static UINT const WM_TASKBARCREATED = RegisterWindowMessage(_T("TaskbarCreated"));//桌面重启时会发送一个消息
if (WM_TASKBARCREATED == uMsg)//
{
AddToTray();//重新添加托盘图标即可
return S_OK;
}
...
}
//3. 判断系统版本,win10及以上版本不能使用GetVersionEx来获取
void getSystemName()
{
//先判断是否为win8.1或win10
std::string vname;
typedef void(__stdcall*NTPROC)(DWORD*, DWORD*, DWORD*);
HINSTANCE hinst = LoadLibrary("ntdll.dll");
DWORD dwMajor, dwMinor, dwBuildNumber;
NTPROC proc = (NTPROC)GetProcAddress(hinst, "RtlGetNtVersionNumbers");
proc(&dwMajor, &dwMinor, &dwBuildNumber);
if (dwMajor == 6 && dwMinor == 3) //win 8.1
{
vname = "Microsoft Windows 8.1";
printf_s("此电脑的版本为:%s\n", vname.c_str());
return;
}
if (dwMajor == 10 && dwMinor == 0) //win 10
{
vname = "Microsoft Windows 10";
printf_s("此电脑的版本为:%s\n", vname.c_str());
return;
}
//判断win8.1以下的版本
SYSTEM_INFO info; //用SYSTEM_INFO结构判断64位AMD处理器
GetSystemInfo(&info); //调用GetSystemInfo函数填充结构
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
#pragma warning(disable:4996)
if (GetVersionEx((OSVERSIONINFO *)&os))
{
//6.2 win8
//6.1 win7
//6.0 server 2008 / vista
//5.1 xp
//5.0 2000
}
}
近期汇总:锁定任务栏 - 托盘图标重载 - 获取win10系统版本号
最新推荐文章于 2021-01-23 14:35:44 发布