Я добавил ссылку на 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; }
}
Можете ли вы объяснить, что вы пытаетесь сделать немного больше? Не похоже, что вы говорите об управлении диалогами SaveAs/OpenFile в теле вопроса. –