Как программно переместить панель задач Windows (взять два) - PullRequest
6 голосов
/ 21 сентября 2010

Прежде всего, я знаю, что в SO есть аналогично сформулированный вопрос, но на него не ответили должным образом, и большая часть дискуссии вокруг него сводилась к «вы не должны этого делать».

Итак, давайте начнем с основ.Зачем это нужно.

Я работаю в компании, которая раздала нашим работникам несколько десятков планшетных нетбуков.Как вы знаете, нетбуки имеют сравнительно более низкое разрешение, а площадь экрана очень, очень важна.

Когда мы переводим нетбуки в режим планшета, мы используем их для записи, и портретный режим гораздо удобнее для этого.Дело в том, что при повороте экрана панель задач остается на том же относительном крае, что и на ландшафте.Если он был внизу, он остается внизу на портрете.Но поскольку мы уже используем его на левом краю в альбомной ориентации, в итоге панель задач занимает очень заметный процент доступного экрана.

У меня уже есть структура для прослушивания события изменения разрешения, и она работает должным образом, но все примеры, которые я видел относительно передачи сообщений в окно панели задач, в конечном итоге не перемещают его.Это похоже на насильственное игнорирование.

Есть ли способ добиться этого?В настоящее время я использую c #, но это не является обязательным требованием, я могу легко добиться преобразования из c ++ или vb, и вызовы p / не страшны.

Операционная система - Windows 7.

[Редактировать: я уже пробовал SHAppBarMessage, с SETPOS, он не работает на Windows 7. Я пробовал пинвоки MoveWindow и SetWindowPos, также не работают на Windows 7 на панели задач.Для других окон это работает просто отлично.И я уверен, что у меня есть правильный дескриптор, потому что, если я использую ShowWindow pinvoke, чтобы скрыть его, он действительно скрывается, хотя я не могу вернуть неиспользованное пространство для чего-либо еще.Эти методы работали на XP, поэтому это так расстраивает.]

Большое спасибо за потраченное время, Joao Correia

1 Ответ

0 голосов
/ 21 сентября 2010

Вы пробовали FindWindow () с Shell_TrayWnd в качестве класса, а затем использовали SetWindowPos для mvoe окна?

Не уверен, как Windows воспримет это.

Существует также специальный API длясделать с панели инструментов (что такое панель задач), проверить:

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

...