Методы манипулирования / контроля диалогов Windows Сохранить как / Открыть файл? - PullRequest
0 голосов
/ 19 февраля 2012

Я пытаюсь создать программу для Windows, которая обеспечила бы функциональность folder-bookmarks-ish, которая позволяла бы вам нажимать горячую клавишу и перемещаться по открытому диалоговому окну к назначенной папке. Конечно, для этого мне нужно было бы манипулировать диалогами Windows Explorer и тому подобным. Кто-нибудь может указать мне правильное направление?

Заранее спасибо. :)

Ответы [ 2 ]

1 голос
/ 19 февраля 2012

Похоже, вам нужно будет использовать pinvoke и впасть в мелкую мелочь, но это можно сделать.

http://www.codeproject.com/Articles/19566/Extend-OpenFileDialog-and-SaveFileDialog-the-easy

0 голосов
/ 19 февраля 2012

Я добавил ссылку на SHDocVw, описанную здесь: StackOverflow SHDocVw Пример:

Это позволит вам перечислять все открытые окна iexplore.(включая открытые диалоговые окна Windows Explorer; единственная проблема заключается в том, что для определенных специальных папок полный путь не отображается, но это можно исправить с помощью небольшого творческого кода). Затем можно просмотреть все открытые окна для URL-адресов, имеющих файл: /// в начале, а затем вы можете предложить пользователю назначить горячую клавишу для этого конкретного открытого окна.Я обнаружил, что SHDocVw не всегда надежно возвращает все окна iexplore, поэтому это может быть не тем решением, которое вы ищете.Было бы проще, чтобы пользователь вводил путь к папке в текстовое поле в форме, а затем нажимал кнопку, которая динамически создавала глобальную горячую клавишу и обработчик событий для глобальной клавиатуры горячей клавиши.Я попытался сделать это несколькими разными способами, и в итоге я использовал файл .cs для codeproject. Здесь: CodeProject: низкоуровневая глобальная клавиатурная зацепка

в обработчике событий для глобальной клавиатурной зацепки,вам нужно будет использовать Process.Start (x.Process), где x имеет пользовательский тип класса, который имеет конкретную горячую клавишу, связанную с определенным местоположением папок.Таким образом, вы можете посмотреть на клавишу, которая была нажата в обработчике событий, и запустить связанный процесс (или в этом случае открыть определенную папку). Каждый раз, когда пользователь добавляет местоположение дополнительной папки, создается новый объект пользовательского типа.который включает параметр горячей клавиши и путь к папке (пользовательское значение).Этот пользовательский тип объекта (определенный ниже) затем добавляется в глобальный список типа «folderLocation», так что к нему можно будет получить доступ позже, когда клавиши фактически нажаты.Приложение добавляло каждый объект folderLocation в список flList по мере их создания.

Я также определил список ключей типа, а затем определил первые 12 объектов в этом списке как F1 ... F12.Для каждого добавляемого расположения папки следующий ключ в предварительно определенном списке добавляется как горячая клавиша.(хотя вы могли бы также задать пользователю определение горячей клавиши)

В конце пользователь нажимает клавишу F1, и в результате запускается обработчик события нажатия клавиши глобальной клавиши, а затем обработчик смотрит, какая кнопка быланажата, сравнивает его с существующим списком пользовательских типов: folderLocation и ищет соответствующий ключ.Найдя его, он запускает связанный путь к папке folderLocation с помощью Process.Start .... Удачи ...

    public class folderLocation
    {
        public string folderPath { get; set; }
        public string folderName { get; set; }
        public Keys hotKey { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...