Современные решения

для защиты Windows приложений

и восстановления исходного кода
Автор: vbcode. Дата публикации: 03.08.2004

Использование функции SHGetFileInfo


Данный пример позволяет из пути к файлу узнать имя файла, а также описание типа зарегистрированного файла, и еще 3 параметра, смысл которых я не уловил. Вам и карты в руки, если вы узанаете смысл получаемых параметров, напишите.

Const MAX_PATH = 260 Private Type SHFILEINFO hIcon As Long ’ out: icon iIcon As Long ’ out: icon index dwAttributes As Long ’ out: SFGAO_ flags szDisplayName As String * MAX_PATH ’ out: display name (or path) szTypeName As String * 80 ’ out: type name End Type Private Enum SHGFI_FLAGS SHGFI_LARGEICON = &H0 ’ sfi.hIcon is large icon SHGFI_SMALLICON = &H1 ’ sfi.hIcon is small icon SHGFI_OPENICON = &H2 ’ sfi.hIcon is open icon SHGFI_SHELLICONSIZE = &H4 ’ sfi.hIcon is shell size (not system size), rtns BOOL SHGFI_PIDL = &H8 ’ pszPath is pidl, rtns BOOL SHGFI_USEFILEATTRIBUTES = &H10 ’ pretend pszPath exists, rtns BOOL SHGFI_ICON = &H100 ’ fills sfi.hIcon, rtns BOOL, use DestroyIcon SHGFI_DISPLAYNAME = &H200 ’ isf.szDisplayName is filled, rtns BOOL SHGFI_TYPENAME = &H400 ’ isf.szTypeName is filled, rtns BOOL SHGFI_ATTRIBUTES = &H800 ’ rtns IShellFolder::GetAttributesOf SFGAO_* flags SHGFI_ICONLOCATION = &H1000 ’ fills sfi.szDisplayName with filename containing the icon, rtns BOOL SHGFI_EXETYPE = &H2000 ’ rtns two ASCII chars of exe type SHGFI_SYSICONINDEX = &H4000 ’ sfi.iIcon is sys il icon index, rtns hImagelist SHGFI_LINKOVERLAY = &H8000 ’ add shortcut overlay to sfi.hIcon SHGFI_SELECTED = &H10000 ’ sfi.hIcon is selected icon End Enum Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long Private Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE Or SHGFI_ICON Private Sub Command1_Click() Dim hFile As Long, nRet As Long Dim nSize As Long, cCount As Long Dim sTmp As String Dim shfi As SHFILEINFO sPath = "C:\AUTOEXEC.BAT" nRet = SHGetFileInfo(sPath, 0&, shfi, Len(shfi), BASIC_SHGFI_FLAGS) MsgBox shfi.dwAttributes MsgBox shfi.hIcon MsgBox shfi.iIcon MsgBox shfi.szDisplayName MsgBox shfi.szTypeName End Sub


Комментарии

отсутствуют

Добавление комментария


Ваше имя (на форуме):

Ваш пароль (на форуме):

Комментарии могут добавлять только пользователи,
зарегистрированные на форуме данного сайта. Если Вы не
зарегистрированы, то сначала зарегистрируйтесь тут

Комментарий: