Главное меню

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Главное меню

Сообщение Twister » 10.10.2007 (Ср) 12:44

Доброго всем времени суток!

Возник один вопрос по работе, но, честно говоря, ответ получить я и не надеюсь...

Суть вот в чем: если сделать двойной клик по папке в главном меню, то откроется проводник в этой папке. Как это заблокировать?

Рыл в доках по реестру, но ближайшее что нашел - запрещение перетаскивания элементов главного меню.

Может кто сталкивался?
А я все практикую лечение травами...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 10.10.2007 (Ср) 13:21

Ну, я просто закрывал окно эксплорера, которое открывало папку, которую открывать нельзя.
Лучший способ понять что-то самому — объяснить это другому.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.10.2007 (Ср) 13:36

Я уже думал об этом. Но способ мне не нравится. И не только из эстетических соображений.

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

Посещает бредовая мысль - вскрыть проводник и найти, где его в памяти хранится текущая директория, но, чувствую, проблемы совместимости потом дадут о себе знать. Да и слишком геморно это...
А я все практикую лечение травами...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 10.10.2007 (Ср) 15:09

Это делается через ShellWindows.
Лучший способ понять что-то самому — объяснить это другому.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.10.2007 (Чт) 8:31

Это делается через ShellWindows.
Немного не вкурил о чем ты. Можно по-подробнее?
А я все практикую лечение травами...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.10.2007 (Чт) 9:00

Код: Выделить всё
Dim WithEvents sw As ShellWindows

Private Sub Form_Load()
    Set sw = New ShellWindows
End Sub

Private Sub sw_WindowRegistered(ByVal lCookie As Long)
Dim x As Integer
    For x = sw.Count - 1 To 0 Step -1
        If sw(x).LocationURL = "file:///C:/Documents%20and%20Settings/Computer/Главное%20меню/Программы" Then
            sw(x).Quit
            Exit For
        End If
    Next
End Sub
Лучший способ понять что-то самому — объяснить это другому.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.10.2007 (Чт) 11:51

1. Попытался методом научного тыка определить, какую библиотеку подключить к проекту - не нашел.
Смотрел в Microsoft Browser Helpers и в Microsoft Shell Controls and Automation, но это все не то. Подскажи, что подключать-то?
2. Что бы там не подключалось, работает оно, скорее всего, через COM-объекты. Проект, для которого мне это нужно, пишется на Делфях, поэтому юзать я буду CreateOleObject со всеми вытекающими. Подскажи, какое имя класса передавать этой функции и где можно нарыть инфу по его (класса) членам?
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 11.10.2007 (Чт) 11:57

Microsoft Internet Controls, как ни странно.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.10.2007 (Чт) 14:54

Итак, с интерфейсами IWebBrowser2 и IShellWindows я разобрался (Antonariy и keks-n вам спасибо за то, что наставили на путь истинный :wink: ). Накидал в Делфях код, перечисляющий текущие пути в запущенных проводниках. Так что вопрос отчасти можно считать закрытым.

Остается открытой лишь тема блокировки двойного щелчка в главном меню...
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 12.10.2007 (Пт) 12:20

Кстати, Antonariy, есть одна фишка.

Если после создания класса (читать: после установки связи с OLE-сервером) проводник перезапустить, то связь с OLE-сервером теряется. Приходиться "переконнекчиваться". Но работает это как-то через раз. Как ты решал эту проблему?
А я все практикую лечение травами...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 49

    TopList