Программно изменяя вид обозревателя в C #

2

Я программно создаю папку с помощью С# и вам нужно установить представление по умолчанию папки в "Thumbnails".

Теги:
directory
filesystems

5 ответов

0
Лучший ответ

Единственный способ, которым я знаю, управлять этим параметром - через pInvoke, но похоже, что нет сообщения, чтобы установить представление в Thumbnails. Здесь - фрагмент кода, предназначенный для WinXP.

2

Ниже перечислены соответствующие разделы реестра: http://support.microsoft.com/kb/812003

Однако для того, чтобы изменения в этой статье KB вступили в силу, необходимо выбрать "запомнить настройки каждого вида папок". Похоже, что это будет "плохое поведение" для программы, чтобы изменить это без специального запроса пользователя.

Обновление: Для desktop.ini мне никогда не удавалось использовать его; однако этот сайт, похоже, перечисляет несколько CLSID, на которые стоит обратить внимание: http://www.xs4all.nl/~hwiegman/desktopini.html

В частности, раздел [ExtShellFolderViews]. Я дал ему вихрь, но не повезло.

  • 0
    Я думаю, что поведение в порядке, так как приложение создает папку - вроде как javascript может закрыть окно, которое оно уже открыло.
  • 0
    Я искал какой-то ключ реестра для изменения, но я не видел / не вижу, как подключить реестр к папке. Вы правы в том, что я не хочу переопределять «Запоминать настройки просмотра каждой папки» для пользователя. Можно ли использовать файл desktop.ini?
Показать ещё 1 комментарий
0

В соответствии с этим post вы можете сделать ссылку на shdocvw.dll для запроса текущего IServiceProvider. Затем получите theIShellBrowserIShellViewIFolderView. Когда у вас есть IFolderView, вы можете получить/установить текущий режим просмотра папки.

0

Вызов IFolderView:: SetCurrentViewMode с FVM_THUMBSTRIP

Не уверен, что в окне проводника вы должны запросить IFolderView. На рабочем столе пользователя может быть несколько окон explorer, те, которые работают с более высоким уровнем целостности, лишат вас доступа, если вы находитесь на более низком уровне целостности.

  • 0
    После создания папки я открываю ее в окне проводника, так что это может быть путь, если это постоянное изменение. Это означает, что после того, как пользователь закрывает папку и возвращается к ней, она все еще находится в представлении миниатюр (при условии, что для «Запомнить настройки каждой папки» установлено значение «истина»). Я нашел пример в VB ( vbforums.com/showthread.php?t=409476 ), но мне нужно будет преобразовать его в C #.
  • 0
    ShellExecute не дает вам контроль после запуска процесса. Вы можете написать BHO, чтобы проверить, является ли родительский процесс вашим приложением, а текущим exe является explorer.exe. Если оба значения верны, вы можете получить команды из своего приложения с помощью методов межпроцессного взаимодействия, например, изменить режим просмотра в обработчике событий DocumentComplete. blog.joycode.com/jiangsheng/archive/2004/09/17/33756.aspx - это метод получения IFolderView от IShellBrowser.
Показать ещё 1 комментарий
0

Предполагая, что вы делаете это самостоятельно, используя ListView, вы можете либо установить свойство View на LargeIcon, либо если этого недостаточно (вы указываете миниатюры), вы должны, вероятно, установить OwnerDraw в true для элементов и нарисуйте их сами.

  • 0
    Я сомневаюсь, что «LargeIcon» такой же, как «Миниатюра».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню