设置任务栏位置 Win7 c++

Set Taskbar position Win7 c++

本文关键字:c++ Win7 位置 任务栏 设置      更新时间:2023-10-16

是否可以使用Windows API设置任务栏位置/宽度/高度?我正在运行 3 台显示器,我想防止任务栏跨越所有显示器,而不是一直保持在顶部。

这是我迄今为止尝试过的,但没有运气...我不确定我的代码是否有问题,或者它只是被阻止了。

#include <iostream>
#include "Windows.h"
using namespace std;
class MyClass
{
public:
    int getTaskBarHeight();
    void setTaskBarPos();
};
int MyClass::getTaskBarHeight()
{
    RECT rect;
    HWND taskBar = FindWindow(L"Shell_traywnd", NULL);
    if(taskBar && GetWindowRect(taskBar, &rect)) {
        return rect.bottom - rect.top;
    }
}
void MyClass::setTaskBarPos()
{
    RECT rect;
    HWND taskBar = FindWindow(L"Shell_traywnd", NULL);
    if(taskBar && GetWindowRect(taskBar, &rect)) {
        SetWindowPos(taskBar, HWND_TOPMOST, 0, 0, 1080, 46, SWP_NOZORDER);
    }
}
int main(void)
{
    MyClass taskbar;
    cout << taskbar.getTaskBarHeight();
    taskbar.setTaskBarPos();
    int a;
    cin >> a;
}

要回答"跨越所有 3 个显示器"的问题,这通常取决于显示适配器的配置。您可以有 3 个单独的显示器(每个显示器 1 个),或者跨越所有三个显示器的 1 个大显示器。后者听起来像你的情况,Windows无法使应用栏仅占据显示器的一部分。

最好的办法是调整显示驱动程序以创建 3 个独立显示器,而不是 1 个大显示器。