设置任务栏位置Win7 C++
是否可以使用Windows API设置任务栏位置/宽度/高度? 我正在运行3台显示器,并且我想阻止任务栏横跨所有显示器,并且始终保持最佳状态。设置任务栏位置Win7 C++
这是我迄今没有运气尝试......我不知道,如果有什么错我的代码,或者它只是被*。
#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;
}
要回答“Spanning accross all 3 displays”的问题,这通常取决于显示适配器的配置。您可以有3个独立的显示器(每个显示器1个),或者1个大显示器横跨所有三个显示器。后者听起来像你的情况,而Windows没有办法让应用栏只占用显示器的一部分。
最好的办法是调整显示驱动程序来创建3个indiividual显示,而不是1大的。
nVidia控制面板中的SLi选项(测试版)实际调整大小并移动起始栏,不知道它们是如何做的。但它将其锁定在中心位置,并导致填充屏幕应用出现问题。 – FallingReign 2012-04-23 11:27:12
恰恰为什么它不应该:)应用程序栏使用单个显示的整个边缘,而不是其中一部分。 – Deanna 2012-04-23 11:33:45
但nVidia实际上有任务栏使用我的3台显示器中的1/3(这被视为单个显示器) – FallingReign 2012-04-23 23:36:18
如果没有办法来约束它,只要你想通过Windows的常用设置/控制面板方面,我怀疑有一个编程接口,它是适当的 - 有任意程序与任务栏干扰将不会是一个很好的一般经验。 – 2012-04-22 06:38:12
这个评论是题外话题,但它看起来像你没有得到正确的类的概念。窗口句柄应该是类MyClass的成员变量,而不是成员函数中的局部变量。 – user877329 2012-04-22 12:43:37
您是否在任务栏中找到了句柄? – user877329 2012-04-22 12:44:23