Twister писал(а):Эм... А может тебе просто сорцы проводника взять из исходников w2k/wnt?
Да уж какие к чёрту авторские права... Сей код гуляет по сети с 2004 года, даже в исходниках Касперского можно найти коды мелкомягких. Так что забейjangle писал(а):Думаю это будет нарушением авторских прав Майкрософт.И потом я на VB код ищю
Twister писал(а): даже в исходниках Касперского
Twister писал(а):http://blogs.drweb.com/node/414
Ага, потому что получается паравоз.jangle писал(а):Это все равно что украсть чертежи новейшего самолета, круто звучит, но практического смысла нет.
jangle писал(а):Если у кого-нибудь есть, поделитесь пожалуйста.
FFOX писал(а):jangle писал(а):Если у кого-нибудь есть, поделитесь пожалуйста.
Книжка Евангелоса Петрусоса Visual Basic 6 (ISBN 5731500738). Глава 8 вот код примера с диска к книге проект Explorer
ЗЫ
За работу кода отвечает издатель книги. Я не проверял.
dr.MIG писал(а):Что касается 1 и 2: За это отвечают разделы HKEY_CLASSES_ROOT. За ассоциирование с одним расширением отвечает два раздела. Первый — соответствует расширению, а в качестве значения параметра по умолчанию, имеет ProgID. Второй — с именем, соответствующим этому самому ProgID и значением параметра по умолчанию, соответствующим типу файла. Этот раздел может содержать так же подразделы, в том числе DefaultIcon (иконка по умолчанию).
Набросал скелет проводника.
Antonariy писал(а):2)Тип файла это кагбэ его расширение, не?
Antonariy писал(а):2)Тип файла это кагбэ его расширение, не?
jangle писал(а):Такой примитив меня не интересует.
jangle писал(а):Нет не расширение, это столбец в проводнике
jangle писал(а):Наконец докопал как получать иконки, типы файлов и прочую инфу о файле. Функция SHGetFileInfo вернет все в лучшем виде
Глупости. В любом исходнике можно разобраться, все упирается только во время.Исходник в отрыве от его разработчиков ничего не стоит
Угу, но не всегда. Иногда приходилось брать иконку по инфе из реестра:Функция SHGetFileInfo вернет все в лучшем виде
// GetRegistryIcon() возвращает хэндл иконки извлеченной с помощью ExtractIcon()
SHGetFileInfo(lpszFileName, 0, shfi, SizeOf(SHFILEINFO), SHGFI_SMALLICON or SHGFI_ICON);
ind := ImageList_AddIcon(frmMain.iml.Handle, shfi.hIcon);
if ind = -1 then ind := ImageList_AddIcon(frmMain.iml.Handle, GetRegistryIcon(lpszFileName));
if ind = -1 then ind := 0;
// li это элемент в ListView
li.ImageIndex := ind;
Хакер писал(а):FFOX, издеваешься? С каких это пор?
Antonariy писал(а):Ты не просто спросил, а посоветовал попробовать,
FFOX писал(а):Посмотри в эту сторону, может будет поудобнее работать?
Public Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" _
(ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
Public Declare Function DrawIcon Lib "user32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, _
ByVal hIcon As Long) As Long
Public Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
Dim mIcon As Long
mIcon = ExtractAssociatedIcon(App.hInstance, xFileName, 2)
DrawIcon Image2.hDC, 0, 0, mIcon
DestroyIcon mIcon
Antonariy писал(а):Наткнулся на еще один способ, попроще в реализации:
Antonariy писал(а):1. Ну ты еще пару запятых из контекста вырви
FFOX писал(а):Посмотри в эту сторону, может будет поудобнее работать?
Что таки попробовал — молодец.
Antonariy писал(а):Наткнулся на еще один способ, попроще в реализации:
- Код: Выделить всё
Public Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" _
(ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
Public Declare Function DrawIcon Lib "user32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, _
ByVal hIcon As Long) As Long
Public Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
Dim mIcon As Long
mIcon = ExtractAssociatedIcon(App.hInstance, xFileName, 2)
DrawIcon Image2.hDC, 0, 0, mIcon
DestroyIcon mIcon
DrawIconEx Picture1.hdc, 16, 16, hIcon, 16, 16, 0, 0, DI_NORMAL
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18