繁体   English   中英

如何以编程方式移动Windows任务栏(取两个)

[英]How to programmatically move windows taskbar (take two)

首先,我知道在SO中有一个类似的措辞问题,但它没有得到适当的回答,并且围绕它的大部分讨论落到了“你不应该这样做”。

让我们从基础开始。 为什么需要这样做。

我在一家公司工作,向我们的员工发放了几十台平板电脑上网本。 如您所知,上网本的分辨率相对较低,屏幕空间非常非常重要。

当我们将上网本旋转到平板电脑模式时,我们使用它们进行书写,而肖像模式则更加舒适。 问题是,当屏幕旋转时,任务栏与景观保持在相同的相对边缘。 如果它在底部,则它在纵向上保持在底部。 但是由于我们已经在横向的左边缘上使用它,我们最终得到的任务栏占据了可用屏幕的非常明显的百分比。

我已经有了用于侦听分辨率更改事件的结构,并且它正常工作,但是我看到的关于将消息传递到任务栏窗口的所有示例最终都无法移动它。 就像被强行忽略一样。

有没有办法实现这个目标? 我目前正在使用c#,但这不是一个明确的要求,我可以很容易地实现从c ++或vb的转换,而p / invokes并不可怕。

操作系统是Windows 7。

[编辑:我已经尝试过SHAppBarMessage,使用SETPOS,它在Windows 7上不起作用。我尝试过MoveWindow和SetWindowPos pinvokes,也不能在任务栏上的Windows 7上运行。 对于其他窗户,它工作得很好。 而且我确信我有正确的句柄,因为如果我使用ShowWindow pinvoke隐藏它,它真的隐藏了,虽然我不能回收未使用的空间用于其他任何东西。 这些方法确实适用于XP,这就是它如此令人沮丧的原因。

非常感谢你的时间,Joao Correia

您是否尝试使用Shell_TrayWnd作为类的FindWindow(),然后使用SetWindowPos来窗口?

不知道Windows会如何采取这种方式。

还有与AppBar有关的特定API(任务栏是什么),请查看:

http://bytes.com/topic/c-sharp/answers/247701-moving-windows-takbar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM