C# 如何以编程方式移动windows任务栏(第二步)

C# 如何以编程方式移动windows任务栏(第二步),c#,shell,automation,taskbar,C#,Shell,Automation,Taskbar,首先,我知道在SO中有一个措辞类似的问题,但没有得到正确的回答,围绕它的大部分讨论都集中在“你不应该那样做” 因此,让我们从基础开始。为什么需要这样做 我在一家公司工作,该公司向我们的员工分发了几十本平板上网本。正如你们所知,上网本的分辨率相对较低,屏幕的不动产非常非常重要 当我们将上网本旋转到平板电脑模式时,我们使用它们进行书写,而肖像模式则更为舒适。问题是,当屏幕旋转时,任务栏保持在与横向相同的相对边缘上。如果它在底部,它将停留在肖像的底部。但是,由于我们已经在横向屏幕的左侧边缘使用了它,因

首先,我知道在SO中有一个措辞类似的问题,但没有得到正确的回答,围绕它的大部分讨论都集中在“你不应该那样做”

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

我在一家公司工作,该公司向我们的员工分发了几十本平板上网本。正如你们所知,上网本的分辨率相对较低,屏幕的不动产非常非常重要

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

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

有没有办法做到这一点?我目前使用的是C语言,但这不是一个明确的要求,我可以很容易地实现从C++或VB的转换,并且P/调用不可怕。 操作系统是Windows7

[编辑:我已经尝试过SHAppBarMessage,使用SETPOS,它在windows 7上不起作用。我尝试过MoveWindow和SetWindowPos pinvokes,也不在任务栏上的windows 7上起作用。对于其他窗口,它工作得很好。我确信我有正确的句柄,因为如果我使用ShowWindow pinvoke来隐藏它,它确实会隐藏,尽管我无法重新编译这些方法在XP上确实有效,这就是为什么它如此令人沮丧的原因。]

非常感谢您抽出时间, Joao Correia

您是否尝试过使用Shell\u TrayWnd作为类的FindWdow(),然后使用SetWindowPos打开窗口

不过,我不知道Windows会如何处理这个问题

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


是的,我试过FindWindow和你建议的参数,这是系统忽略的。如果我在任何其他窗口上使用它,它都会工作。任务栏会忽略它。至于建议的链接,我试过确切的代码。它在XP上工作,但在7上失败,因此我需要回答这个问题。啊,我明白了,这很有趣。抱歉无耻/bump,但我仍然对此感到困惑。我甚至在考虑另一种方法。在检测到旋转后完全隐藏任务栏,并在旋转回来时再次显示。但是。即使我可以隐藏任务栏和开始按钮“orb”,我无法回收桌面区域的空间。它总是将任务栏视为存在,并且不允许windows在空间上最大化。您好,我只是想让您知道这是可以做到的,我发布了一个批处理解决方案和vbscript,所以C#也必须是可能的,请参阅