Есть ли способ изменить / добавить в общий диалог открытия / сохранения Windows, чтобы добавить дополнительную функциональность?
На работе у нас есть область на сервере с сотнями «папок заданий» - просто обычные папки Windows, которые автоматически создаются / управляются приложением базы данных для хранения информации о задании (электронные письма / отсканированные факсы / документы Word / таблицы / фотографии и т. д.). названы по номеру вакансии.
Я хотел бы расширить стандартный диалог открытия / сохранения с помощью поля со списком, которое ищет папки заданий на основе тегов из базы данных, чтобы мои пользователи могли легко найти путь к нужной папке заданий, чтобы найти / сохранить свою работу.
Подключение к базе данных и обеспечение функциональности для поиска не проблема, но есть ли способ добавить элемент управления combobox (в идеале с событием нажатия / нажатия клавиши) в диалоговое окно?
Или создать свой собственный диалог и использовать его вместо стандартного? то есть из ЛЮБОГО приложения будет вызываться мой диалог, обеспечивающий легкий доступ к папкам вакансий. Если они находятся в Outlook, они могут быстро найти папку с вакансиями, если они используют Блокнот, они все равно могут легко найти папку.
Это означало бы новый унифицированный способ поиска папок вакансий из любого приложения.
В идеале кто-то знал бы способ использования VB / VB.net / C#, но я предполагаю, что если это возможно, это, вероятно, будет C++.





Ваша программа может установить начальную папку, поэтому, если вы знаете номер задания (и, следовательно, имя папки), вы можете настроить диалоговое окно так, чтобы оно начиналось с правильной уже открытой папки. Кроме того, я не думаю, что вы можете многое сделать, не написав для него полное расширение оболочки.
Соответствующая документация 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? Спасибо