Что нового

Открытие библиотеки значков Drives.dll

eus_deus

Новичок
Сообщения
118
Репутация
0
Всем доброго времени суток!
Возникла необходимость открывать для просмотра библиотеку Drives.dll. Это библиотека значков для панели дисков файлового менеджера Total Commander.Нужен только просмотр, не редактирование и извлечение.Файл прикладываю, сам лично мог открыть только в рестораторе, но нужно не так.
Спасибо.
 

Вложения

  • Drives.zip
    27.2 КБ · Просмотры: 13
A

Alofa

Гость
Если вам нужен готовый продукт, то вот залил в файловый архив форума утилиту Icons Viewer.
Эта утилита написана на Autoit и входит в состав инструментов редактора SciTE от Yashied.
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
Alofa, спасибо, конечно, но мне нужна реализация.. Или наведение на правильную мысль. И предложенная вами утилита, кстати, не открывает указанную мной библиотеку
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
eus_deus [?]
И предложенная вами утилита, кстати, не открывает указанную мной библиотеку
это потому, что в dll нет иконок. а только битмапы
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
joiner, и как быть в этом случае? Как их засунуть в ListView, как обычную библиотеку
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
eus_deus
засунуть в ListView
Код:
#include <WinAPIRes.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

$hInst = _WinAPI_LoadLibrary("Drives.dll")
$aData = _WinAPI_EnumResourceNames($hInst, $RT_BITMAP)
If @error Then Exit MsgBox(0, "Error", "Bitmap-ресурсы не найдены")

GUICreate("BmpResView", 210, 310)
$hLV = GUICtrlGetHandle(GUICtrlCreateListView("", 5, 5, 200, 300))
GUISetState(@SW_SHOW)

$hImage = _GUIImageList_Create()
For $i = 1 To $aData[0]
  $hBitmap = _WinAPI_LoadBitmap($hInst, $aData[$i])
  _GUIImageList_Add($hImage, $hBitmap)
  _WinAPI_DeleteObject($hBitmap)
Next
_GUICtrlListView_SetImageList($hLV, $hImage, 1)

_GUICtrlListView_AddColumn($hLV, "Bitmaps", 150)

For $i = 1 To $aData[0]
  _GUICtrlListView_AddItem($hLV, $aData[$i], $i - 1)
Next

Do
Until GUIGetMsg() = -3
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
InnI, почти так, как хотелось. Если бы еще можно было увеличить сами битмапы, но задание размера результата не дает..
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
eus_deus
увеличить сами битмапы
Код:
#include <WinAPIRes.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

$hInst = _WinAPI_LoadLibrary("Drives.dll")
$aData = _WinAPI_EnumResourceNames($hInst, $RT_BITMAP)
If @error Then Exit MsgBox(0, "Error", "Bitmap-ресурсы не найдены")

GUICreate("BmpResView", 210, 310)
$hLV = GUICtrlGetHandle(GUICtrlCreateListView("", 5, 5, 200, 300))
GUISetState(@SW_SHOW)

$hImage = _GUIImageList_Create(32, 32)
For $i = 1 To $aData[0]
  $hBitmap = _WinAPI_LoadBitmap($hInst, $aData[$i])
  $hZoomBmp = ZoomBmp($hBitmap)
  _GUIImageList_Add($hImage, $hZoomBmp)
  _WinAPI_DeleteObject($hBitmap)
  _WinAPI_DeleteObject($hZoomBmp)
Next
_GUICtrlListView_SetImageList($hLV, $hImage, 1)

_GUICtrlListView_AddColumn($hLV, "Bitmaps", 150)

For $i = 1 To $aData[0]
  _GUICtrlListView_AddItem($hLV, $aData[$i], $i - 1)
Next

Do
Until GUIGetMsg() = -3

Func ZoomBmp($hBmp)
  $hDC = _WinAPI_GetDC(0)
  $dDC = _WinAPI_CreateCompatibleDC($hDC)
  $zBmp = _WinAPI_CreateCompatibleBitmap($hDC, 32, 32)
  _WinAPI_SelectObject($dDC, $zBmp)
  $sDC = _WinAPI_CreateCompatibleDC($hDC)
  _WinAPI_SelectObject($sDC, $hBmp)
  _WinAPI_StretchBlt($dDC, 0, 0, 32, 32, $sDC, 0, 0, 16, 16, 0x00CC0020) ; $SRCCOPY
  _WinAPI_DeleteDC($dDC)
  _WinAPI_DeleteDC($sDC)
  _WinAPI_ReleaseDC(0, $hDC)
  Return $zBmp
EndFunc
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
InnI, тему считаю решенной. По себя уже допилю .Благодарю.
 
Верх