Изменение / добавление элементов управления в окна Открыть / сохранить общий диалог

Есть ли способ изменить / добавить в общий диалог открытия / сохранения Windows, чтобы добавить дополнительную функциональность?

На работе у нас есть область на сервере с сотнями «папок заданий» - просто обычные папки Windows, которые автоматически создаются / управляются приложением базы данных для хранения информации о задании (электронные письма / отсканированные факсы / документы Word / таблицы / фотографии и т. д.). названы по номеру вакансии.

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

Подключение к базе данных и обеспечение функциональности для поиска не проблема, но есть ли способ добавить элемент управления combobox (в идеале с событием нажатия / нажатия клавиши) в диалоговое окно?

Или создать свой собственный диалог и использовать его вместо стандартного? то есть из ЛЮБОГО приложения будет вызываться мой диалог, обеспечивающий легкий доступ к папкам вакансий. Если они находятся в Outlook, они могут быстро найти папку с вакансиями, если они используют Блокнот, они все равно могут легко найти папку.

Это означало бы новый унифицированный способ поиска папок вакансий из любого приложения.

В идеале кто-то знал бы способ использования VB / VB.net / C#, но я предполагаю, что если это возможно, это, вероятно, будет C++.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
2 067
3

Ответы 3

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

Соответствующая документация Microsoft для Windows API находится здесь:
http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms646839(VS.85).aspx

Обратите особое внимание на флаги OFN_ENABLETEMPLATE и OFN_ENABLEHOOK.

Как вы говорите, эта информация в основном актуальна, когда вы работаете на C / C++.

Как сказал Марк Рэнсом, вы можете сделать это с помощью флагов OFN ENABLETEMPLATE и OFN ENABLEHOOK. Затем вы указываете ресурс диалога для элемента данных lpTemplateName структуры OPENFILENAME. Чтобы правильно разместить элементы управления, нужно немного проб и ошибок.

Подключаемая процедура, которую вы пишете, будет получать оконные сообщения, специфичные для этого диалога - вас особенно интересуют сообщения WM_NOTIFY - есть множество специальных (CDN INITDONE, CDN FOLDERCHANGE и т. д.).

Несколько раз я создавал довольно замысловатые, хотелось бы добавить снимок экрана.

Спасибо, выглядит хорошо! Раньше я настраивал хуки для перехвата событий мыши и нажатий клавиш. Не могли бы вы объяснить, каковы основные шаги, т.е. где находится мой код? это будет где-то dll? Есть ли способ сделать это с помощью VisualStudio.Net 2003 или SharpDevelop? Спасибо

ajp 01.10.2008 11:46

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