2012-02-19 2 views
-3

Я пытаюсь создать программу Windows, которая обеспечит функциональность folder-bookmarks-ish, которая позволит вам нажать горячую клавишу и перейти к диалоговому окну, который вы открыли для назначенной папки. Конечно, для этого мне нужно было бы управлять диалоговыми окнами проводника Windows и т. Д. Любой, кто может указать мне в правильном направлении?Способы управления/управления диалоговыми окнами Windows Save As/Open File?

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

+2

Можете ли вы объяснить, что вы пытаетесь сделать немного больше? Не похоже, что вы говорите об управлении диалогами SaveAs/OpenFile в теле вопроса. –

ответ

0

Я добавил ссылку на SHDocVw Описанная здесь: StackOverflow SHDocVw Example:

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

Внутри обработчика событий для глобального манипулятора клавиатуры вам нужно будет использовать Process.Start (x.Process) где x имеет тип пользовательского класса, который имеет специальную горячую клавишу, связанную с определенным местоположением папок. Таким образом, вы можете посмотреть ключ, который был нажат в обработчике событий, и запустить связанный с ним процесс (или в этом случае открыть конкретную папку). Каждый раз, когда пользователь добавляет местоположение дополнительной папки, создается новый объект пользовательского типа который включает параметр горячей клавиши и папку Path (пользовательское значение). Этот настраиваемый тип объекта (определенный ниже) затем добавляется в глобальный список типа «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; } 
    } 
+0

Хм. Очень подробный ответ - спасибо. – mattsven

1

Похоже, вам нужно будет использовать pinvoke и войти в nitty gritty, но это можно сделать.

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

+0

Я имел в виду тех, кто принадлежал другим приложениям. :/ – mattsven

+3

Пожалуйста, не указывайте важные детали вашего вопроса в комментариях к ответам. Пожалуйста, отредактируйте вопрос, чтобы было ясно. –

Смежные вопросы