![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Router |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.11.2007 Репутация: нет Всего: нет |
Нужно получить список дисков и их метки, так как они показаны в проводнике.
Получить доступные диски не проблема.
а вот метку у меня не получается получить. Использую функцию GetVolumeInformation.
Получается следующее: Если метка тома задана то все нормально, я ее получаю. Но если ее нет - то я получаю, пустую строку. А мне надо получить метки, так как они отображении в проводнике, как мне быть? ![]() |
||||
|
|||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Это сообщение отредактировал(а) Rrader - 2.4.2009, 18:08 |
|||
|
||||
| Router |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.11.2007 Репутация: нет Всего: нет |
А можно пояснить, что здесь происходит!
|
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Работа с моим компьютером средствами оболочки
|
|||
|
||||
| Alix |
|
|||
|
L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 3 Всего: 23 |
Если explorer.exe не запущен, все будет нормально?
Добавлено через 7 минут и 7 секунд Вначале возникла идея воспользоваться National Language Support API, но сходу функция типа GetText(localeid, stringid) найдена не была. Да и скорее всего этот текст - в ресурсах explorer'a. Кстати, тоже вариант, даже если само приложение не запущено. Добавлено через 8 минут и 51 секунду Под текстом имею в виду строку "Локальный диск" и т.п. -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
||||
|
||||
| bems |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Rrader, я в подобной задаче вместо вызова Malloc.Free делал CoTaskMemFree.
Про SHGetMalloc сказано
Еще для этой цели можно использовать ILFree, хотя и вместо нее говорят надо CoTaskMemFree
Короче что-то многовато тут способов. Почему ты делаешь именно так? Это сообщение отредактировал(а) bems - 31.3.2009, 18:43 -------------------- Обижено школьников: 8 |
||||
|
|||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Кстати с SHGetFileInfo с флажком SHGFI_DISPLAYNAME это будет короче
-------------------- Обижено школьников: 8 |
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Описание этих функций в разных редакциях MSDN было разным и двусмысленным. Сейчас, соглашусь, надо вносить исправления в коды. SHGetMalloc менять на CoGetMalloc. CoTaskMemXXX функции аналогичны методам интерфейса IMalloc, который для меня более удобен по возможностям, поэтому использую его. Это реализовано через IShellFolder. Когда у нас на руках уже есть (как в этом примере) этот интерфейс, лучше использовать именно его |
|||
|
||||
| bems |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
-------------------- Обижено школьников: 8 |
||||
|
|||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Можно! В связи с тем, что интерфейс является сложным автообъектом и тесно связан с COM, я всегда и везде самостоятельно дереференсирую ссылки. Для локального кода это забота Delphi, но ссылки могут быть и глобальными, на что новички и попадаются.
Не совсем понял. Я использую IShellFolder в примере и только его, все однообразно. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
ну ты выше говорил "Когда у нас на руках уже есть (как в этом примере) этот интерфейс, лучше использовать именно его " А я в примере вижу, что "уже есть" на практике означает "я его получаю только чтобы добраться до имени". Я понимаю была бы "сопутствующая" задача, для которой нужен этот интерфейс, тогда можно заодгл им же воспользоваться и для получения имён. А тут только ради имен все это. Да я в общем не против этого примера, я просто дусал вдруго есть какие-то высшие причины. По ходу похоже что ты просто так привык когда-то, и пишеш на автомате. Ну оно работает и ладно. -------------------- Обижено школьников: 8 |
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Я его получаю только исходя из удобства перечисления объектов. И мне нравится функционал IShellFolder(2), тем более, когда все рядом |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |