Как программно манипулировать общим диалоговым окном любого приложения Windows? - PullRequest
5 голосов
/ 24 сентября 2008

Моя конечная цель заключается в том, чтобы написать утилиту, которая позволит мне быстро установить папку для любого диалогового окна, выбирая из предустановленного списка «Избранное». Поскольку я просто любитель, а не профессионал, я бы предпочел использовать .NET, потому что это то, что я знаю лучше всего. Я понимаю, что некоторые из этих вещей могут потребовать чего-то большего, чем то, что я мог бы сделать в C #.

Я видел некоторые приложения, которые могут расширить общее диалоговое окно (особенно для «Сохранить как ...» и «Открыть файл»), либо добавив кнопки на панель инструментов (например: Помощник диалогового окна ), либо размещение дополнительных кнопок в строке заголовка рядом с кнопками свертывания, разворачивания и / или закрытия. Любой из них был бы хорошим вариантом, хотя я не имею ни малейшего представления, с чего начать.

Один из подходов, которые я попробовал, состоит в том, чтобы «перетащить» имя папки из приложения, которое я написал, в текстовое поле имени файла в диалоговом окне, выделив его, используя технику перехвата мыши, которую я взял из Hawkeye Runtime Корнелиу Тусни Редактор объектов , а затем добавьте путь к имени, введя SendMessage с помощью WM_SETTEXT. Это (вроде) работает, но кажется немного клунки.

Любой совет по технике или реализации для этого был бы очень признателен. Или, если уже существует утилита, которая уже делает это, пожалуйста, дайте мне знать!

Обновление : Когда все сказано и сделано, я думаю, что я, вероятно, получу с существующей утилитой. Тем не менее, я хотел бы знать, есть ли способ сделать это программно.

Ответы [ 2 ]

5 голосов
/ 24 сентября 2008

Звучит как работа для AutoHotkey для меня.

Я - "профессионал" (по крайней мере, мне платят за программу), но я бы сначала посмотрел на использование многих хорошо проверенных функций AutoHotkeys для доступа к окнам, а не на C # /. NET и, скорее всего, WinAPI через PInvoke.

AutoHotkey даже предоставляет некоторые основные элементы управления пользовательским интерфейсом и является бесплатным.

Вот скрипт AutoHotkey , который очень похож на то, что вы просите.

1 голос
/ 24 сентября 2008

Для чего-то подобного вам, вероятно, понадобятся вызовы Win32 API. Работать с .Net - значит делать много ошибок. Боюсь, я не могу вам чем-то помочь, но я помню, что была книга под названием «Создание подклассов и подключение с помощью Visual Basic» , которая могла бы помочь. Он был написан в основном для VB 6, но я думаю, что в нем есть кое-что из VB.Net.

Кроме того, PInvoke.Net - это вики со множеством подписей, которые вы можете скопировать и вставить, что может помочь.

Когда дело доходит до этого, вам, вероятно, придется узнать больше о том, как Windows работает внутренне (передача сообщений и т. Д.), Чтобы достичь своей цели.

Spy ++ также, вероятно, будет вашим другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...