Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 557

Профиль | Отправить PM | Цитировать


Попался такой код : Комбобокс-список выбора диска
Код: Выделить весь код
!include "MUI2.nsh"
!include "WinCore.nsh"

!define __NSD_ComboBoxEx_CLASS ComboBoxEx32
!define __NSD_ComboBoxEx_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${CBS_DROPDOWN}
!define __NSD_ComboBoxEx_EXSTYLE 0

!define __NSD_DropListEx_CLASS ComboBoxEx32
!define __NSD_DropListEx_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${CBS_DROPDOWNLIST}
!define __NSD_DropListEx_EXSTYLE 0

!insertmacro __NSD_DefineControl ComboBoxEx
!insertmacro __NSD_DefineControl DropListEx

!define CBEM_INSERTITEM       0x00000401
!define CBEM_SETIMAGELIST     0x00000402
!define CBEM_GETIMAGELIST     0x00000403
!define CBEM_GETITEM          0x00000404
!define CBEM_SETITEM          0x00000405
!define CBEM_DELETEITEM       ${CB_DELETESTRING}
!define CBEM_GETCOMBOCONTROL  0x00000406
!define CBEM_GETEDITCONTROL   0x00000407
!define CBEM_GETEXTENDEDSTYLE 0x00000409
!define CBEM_HASEDITCHANGED   0x0000040A
!define CBEM_SETEXTENDEDSTYLE 0x0000040E

!define CBEIF_TEXT            0x00000001
!define CBEIF_IMAGE           0x00000002
!define CBEIF_SELECTEDIMAGE   0x00000004
!define CBEIF_OVERLAY         0x00000008
!define CBEIF_INDENT          0x00000010
!define CBEIF_LPARAM          0x00000020
!define CBEIF_DI_SETITEM      0x10000000

!define SHGFI_SMALLICON       0x00000001
!define SHGFI_ICON            0x00000100
!define SHGFI_DISPLAYNAME     0x00000200
!define SHGFI_TYPENAME        0x00000400
!define SHGFI_SYSICONINDEX    0x00004000

Name "ComboBoxEx"
OutFile ComboBoxEx.exe
InstallDir $TEMP

Page custom CreatePage
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

Function CreatePage
!insertmacro MUI_HEADER_TEXT "ComboBoxEx control" "ComboBoxEx control created using nsDialogs plugin"
nsDialogs::Create 1018
Pop $0
StrCmp $0 error 0 +2
Abort
    ${NSD_CreateLabel} 0u 0u 300u 8u "Выбор диска"
    Pop $0

    ${NSD_CreateDropListEx} 0u 12u 300u 140u "DropListEx"
    Pop $1
    SendMessage $1 ${CBEM_GETCOMBOCONTROL} 0 0 $0
    System::Alloc 352
    System::Call `shell32::SHGetFileInfo(in,in,isR1,i352,i${SHGFI_SMALLICON}|${SHGFI_SYSICONINDEX})i.R2`
    SendMessage $1 ${CBEM_SETIMAGELIST} 0 $R2
    System::Alloc 104
    System::Call `kernel32::GetLogicalDriveStrings(i104,isR0)`
    .while:
    System::Call `kernel32::lstrlen(iR0)i.R3`
    StrCmp $R3 0 .endwhile
        System::Call `kernel32::GetDriveType(iR0)i.R4`
        StrCmp $R4 3 0 .endif
            SendMessage $0 ${CB_GETCOUNT} 0 0 $R6
            System::Call `shell32::SHGetFileInfo(iR0,i0,iR1,i352,i${SHGFI_ICON}|${SHGFI_DISPLAYNAME}|${SHGFI_TYPENAME})`
            System::Call `*$R1(i,i.R5,i,&t${MAX_PATH}.R4)`
            System::Call `*(i${CBEIF_TEXT}|${CBEIF_IMAGE}|${CBEIF_SELECTEDIMAGE},iR6,tR4,i${NSIS_MAX_STRLEN},iR5,iR5,i,i,i)i.R7`
            SendMessage $1 ${CBEM_INSERTITEM} 0 $R7
            System::Free $R7
        .endif:
        IntOp $R0 $R0 + $R3
        IntOp $R0 $R0 + 1
    Goto .while
    .endwhile:
    SendMessage $0 ${CB_SETCURSEL} 0 0
    System::Free $R1
    System::Free $R0

    nsDialogs::Show
FunctionEnd

Section
SectionEnd

Отправлено: 17:28, 11-06-2013 | #395