Как я могу программно манипулировать общим диалоговым окном любого приложения Windows?

StackOverflow https://stackoverflow.com/questions/125710

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Также, PInvoke.Чистый это wiki с большим количеством подписей pinvoke, которые вы можете скопировать и вставить, что может помочь.

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top