Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Получить иконку по расширению файла Добавлено: 15.07.09 23:25  

Автор вопроса:  Дмитрий Юпатов | Web-сайт: cargomaster.at.ua/
Господа, как можно получить иконку по заданному расширению? Обязательное условие: имеем в наличии ТОЛЬКО расширение, файл в большинстве случаев на компе не присутствует.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 16.07.09 00:17
HKEY_CLASSES_ROOT\.txt\@
HKEY_CLASSES_ROOT\txtfile\DefaultIcon\@

Ответить

Номер ответа: 2
Автор ответа:
 Чочооо



Вопросов: 0
Ответов: 3
 Профиль | | #2 Добавлено: 16.07.09 11:50
Не у всих випадках за такою схемою значки отримуються :D

Ответить

Номер ответа: 3
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #3
Добавлено: 16.07.09 12:48
мдя...

Ответить

Номер ответа: 4
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #4
Добавлено: 16.07.09 13:51
http://msdn.microsoft.com/en-us/library/ms648067%28VS.85%29.aspx

только файл должен существовать. можешь сделать его невидимым временным =)

Ответить

Номер ответа: 5
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #5
Добавлено: 16.07.09 16:09
этот способ я знаю. Но представьте: файл, хранимый в БД весит 100 метров (архив, например). Это шо ж, создавать времянку в 100м ?! Хотя стоп... В БД есть также и путь к нему. Можно выдернуть оттуда раснирение и создать ПУСТОЙ файл с таким расширением по нужному пути. Имя тож не важно. Зато после создания система сама ему икону прикрутит, и мне только ее останется показать изложенным выше способом. Вот так например:
  1. Private Sub GetIconFomFile()
  2.         Dim ofdOpen As New System.Windows.Forms.OpenFileDialog
  3.         Dim fname As String
  4.         If ofdOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
  5.             fname = ofdOpen.FileName
  6.         Else
  7.             Exit Sub
  8.         End If
  9.         Me.Icon = Drawing.Icon.ExtractAssociatedIcon(fname)
  10.     End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #6
Добавлено: 16.07.09 17:26
есесно. копировать полностью файл только для получения пути к нему - это нада еще додумаца

Ответить

Номер ответа: 7
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #7
Добавлено: 16.07.09 19:26
Ra$cal, ну ладно... Ну не додумал сразу, так шо ж теперь :)

Ответить

Номер ответа: 8
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #8
Добавлено: 16.07.09 20:21
Короче, вот что вышло:
  1. Function GetFileIcon(ByVal extention As String) As System.Drawing.Icon
  2.         Dim path As String = My.Application.Info.DirectoryPath
  3.         If extention.Chars(0).Equals(".") = False Then
  4.             path = path & "\Temp." & extention
  5.         Else
  6.             path = path & "\Temp" & extention
  7.         End If
  8.         Dim SW As New System.IO.StreamWriter(path)
  9.         SW.Write("This is a teporary file")
  10.         SW.Close()
  11.         GetFileIcon = System.Drawing.Icon.ExtractAssociatedIcon(path)
  12.         System.IO.File.Delete(path)
  13.     End Function

Ответить

Номер ответа: 9
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #9
Добавлено: 16.07.09 20:52
лучше делай в темповой папке системы. чтоб гарантированно не ощутить проблем с правами и ограничениями =)

Ответить

Номер ответа: 10
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #10
Добавлено: 16.07.09 22:26
Не вопрос
  1. Dim path As String = My.Computer.FileSystem.SpecialDirectories.Temp
ну и прочее по тексту. Просто я уже и забыл, как это - быть юзером на птичьих правах.

Ответить

Номер ответа: 11
Автор ответа:
 ari



Вопросов: 0
Ответов: 11
 Профиль | | #11 Добавлено: 17.07.09 18:56
Ні, не треба ніяких дій зайвих. :D

Просто SHGetFileInfo Win32API функцією користуйся. За її допомогою можеш отримувати значок по фіктивній адресі. Проштудуй інфу по SHGetFileInfo.

Ти ж для Windows розробляєш, я правильно зрозумів? :D

Ответить

Номер ответа: 12
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #12
Добавлено: 17.07.09 23:12
ari, спасибо, посмотрю на досуге. Нечто подобное я и пытался отыскать.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам