Jump to content

ListView Row number


Recommended Posts

Hi people,

I'm trying to implement ListView row number visualization in another ListView, but so far I'm stuck. Here the code, if someone could help I'll appreciate it.

 

#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GuiScrollBars.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Opt("GUIOnEventMode", 1)

Global $MainGui, $MsgOk, $MainGuiRefresh, $MainGuiLabelInfo

Global $MainGuiW = @DesktopWidth - 10, $MainGuiH = @DesktopHeight - 90

_GDIPlus_Startup()
Global $Notebook = _GDIPlus_BitmapCreateFromMemory(ScanNew32x32(), True) ;GDI bitmap
Global $Computer = _GDIPlus_BitmapCreateFromMemory(Computer32x32(), True) ;GDI bitmap
_GDIPlus_Shutdown()
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$MainGui = GUICreate("Test Sort", 800, 500, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPSIBLINGS)) ;
GUISetOnEvent($GUI_EVENT_CLOSE, "EventsCtrl")

$MMenuLVAD = GUICtrlCreateListView("", 60, 82, 661, 321, -1, BitOR($LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_HEADERDRAGDROP, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVMMenu = GUICtrlGetHandle($MMenuLVAD);
GUICtrlSetOnEvent($MMenuLVAD, "_Setsort")
_GUICtrlListView_RegisterSortCallBack($MMenuLVAD)


$MMenuLVidx = GUICtrlCreateListView("#", 4, 82, 55, 321,  BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
_GUICtrlListView_SetExtendedListViewStyle(-1,BitOR($LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVidx = GUICtrlGetHandle($MMenuLVidx);
;_GUIScrollBars_ShowScrollBar($hLVidx, $SB_BOTH, False) ;not working !!!
;;------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;Add columns
_GUICtrlListView_AddColumn($MMenuLVAD, "", 30)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 1", 80, 3)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 2", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 3", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 4", 80)

; Load images
Global $hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_Add($hImage, $Computer)
_GUIImageList_Add($hImage, $Notebook)
_GUIImageList_AddIcon($hImage, @SystemDir&"\"&"shell32.dll", 146)
 _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($MMenuLVAD, 0xff442211, 32, 32))

_GUICtrlListView_SetImageList($MMenuLVAD, $hImage, 1) ;   1 - Image list with small icons

GUISetState(@SW_SHOW)

For $i = 0 To 50
    _GUICtrlListView_AddItem($MMenuLVAD, "", 777) ;777 should be an index that not exists in the array
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "Computer" & Random(13467, 23452, 1), 1, 0)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "User" & Random(100, 500, 1), 2, 1)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(25, 5000, 1), 3,2)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(1, 800, 1), 4,3)
_GUICtrlListView_AddItem($MMenuLVidx, $i + 1)
Next

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVidx, 0)
$RecidxDim= $Recidx[3] - $Recidx[1]


While 1
    Sleep(10)
WEnd


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hLVMMenu,$hLVidx
            ;This two lines to sincronize ListViewRowNumbers------------------------------------------------------------------
            Local $Lines = _SendMessage($hLVMMenu, $LVM_GETTOPINDEX) - _SendMessage($hLVidx, $LVM_GETTOPINDEX)
            _SendMessage($hLVidx, $LVM_SCROLL, 0, $Lines * $RecidxDim)
EndSwitch
EndFunc

Func _Setsort()
    _GUICtrlListView_SortItems($MMenuLVAD, GUICtrlGetState($MMenuLVAD))
EndFunc   ;==>_Setsort

Func EventsCtrl()
    Local $Msg = @GUI_CtrlId
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            _GUICtrlListView_UnRegisterSortCallBack($MMenuLVAD)
            _WinAPI_DeleteObject($Notebook)
            _WinAPI_DeleteObject($Computer)
            GUIDelete()
            Exit
    EndSwitch
EndFunc   ;==>EventsCtrl

Func ScanNew32x32()
    Local $ScanNew32x32png = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goUAQsnNhcJAQAACIhJREFUWMOtlklwHNUZx/+vt5lpzWg2SSNpLI0sC1k2XoSMwSCM7bCYShVlpTiQrTA4JLmEYCpJkVtcSVVOWZTKjUoAlUOASlIRwVV4iVFiULBiywvY1u4ZjUbbjGbt7untve4cjCkOkDCO+/IO3a9/v/5//b73CG7DNfzO8YOMsQHG2ABlDIwyUEZBKQOldJgyNvzcs4eGPmsu+X/Ax06eOsCYMyjLvo5IKASPJIE5Dmzbhm3bMEwTZUVBNreGiqKkKGOHf/z97711WwSOnTz1a0kUD3d2dED2eXF1chofnB+H6/GYVcKZLqV80GV1XevXIxoJo1QuIzmfhqbrg0d+9IMXbr6Hv1W4v67u8M67erGaW8NLf3yTcuFgZcfDewvp1tjsamPTSrUlkd+xtRcVtYqpiWtCUzjMNTc1Il8s7brngd2h9989feKWEjh28tQBjyQN775vF959bxTnpqa0x77yeNkny3S8tLa4bOgWD867K9wUh8vxJgWnaSaXHB8LNAquNxwKYuzCJWhVbeBXPz3yFlerAGPO4OaN3UilF3Buakp74ptP5iOBgJ0z9UxAEKvd/nr+kVhLzCMQF8R1XLiMkyQWv3t3Je+IBmMONnV3gVI2WHMJht85frA+EHi6s70Nv3l5iH75ySdy9T4fMxjLiRxXCYoSErK/mQcRbNd1bceB7biwHRcWAxRf1Cimpr2d8RZuNZcL9fT2pYTavp4NtMaa8OHEJNbd2VOS6+ps6jg6gOI6X53r4flmg1FesW3GAZwDFyXbtj/K6ealVYMmCw7pNKLORtNs7erowOLyygBXq4BflvHe2TF09W5RbddhK6a+JhDiBgQxKhKOdwHmAKxkW/pYIZc9uZTNXi2pWsVmjBAX15yooqgqWptjoJQO1JQAZQwgBI4kmcTjZYu6prgAi3l8IY1R2XFdt8qYM6tVitcqJTtrmLzjEoE5II4D4jgEFhFclZOthCxLlDHUVoIbnQ2S1+coNnWu6xW9Q/Z7mesGCpbp6oxZc1qluGrqRKGUNyk4i4JQBkIZQB0QvyjwEDyuKIqgtEYByigYY7Ati5utVPWyY3ObAnx9wTKhMWpkdK2iM8oVLYurmIyvWoQzbHCGDXJTpr1OFLw8OFEUwWpNgFIGwzQhMeq5vFJiXU1BWbUYv6KXjYxRrbquK1iOi6rtcppBONUAp5mE02+IENMG1+rlpJiPiIzdSJOrTYAO5wtFbNvUA5LORP2c17ekUufimmZkVSbkNIfPqxBKGuErOnjFILxqEE4zwVUtwq3ze6UuQalrbmpCOrMI6rBhrsafcDiZXkC8OYYN1UJLrqhz46tVM6u4fEElfF4lQkGDUNSIUKoSvlwlnGKAVw3CixDEjfWi7/6w5Y+GQ/jnB2fBmFObwHPPHhrK5fOpbD6PvX3bRe3qxWimxEhBJUJeI0JBJUJBJXxRI3xRI0K5CqGiE54xXtgerZN3+/Kh3jsSwlxqHhMzs6l3Xj86VHMrDgWDRy58eAV1sg+PrG8Kb8tNJzSFSQWVCHmV8AXtRgoljfClKuEliNKDMTnwaN1a5LHNLbJHkvDS0dfgMHb4ljajueTcntPv/esfFVXD3vt3wbIsnJ9NW6dVf24CUUVzBMdmQEgShXaZ997j1wMPNLDAPT0bBEkS8eLPfo65ZGrw5J9efwHAF18FjuPsmUteD1348PKR0yMjgONC0zTcd/cOPNy3RdqpKPHVXB5LFm/wktcNSRzfLHNSW2srGqMRTM7O4be/fwUrq9lP4F9Y4MBTh15JpdNPT81O48/DxzA/N/dquZA/HE8k9h47dXqwqaGhY/vmHnQm2rBVlr08z4NSiny+gNGxs3j/7DnMpObTPMc9f+ov'
    $ScanNew32x32png &= 'bw7XdCI68NShV57/9jNPa1oFbx3/O6avXEEmley4Pjs7f/OZ7/7wxYOU0gFK6YBl21B1DaqhQOcsUJHNGtScLJZyb+vZ8qXCQnoCWShfSODT8LdPjaCjrR2xxoZXJ2ZmDv/iyE/Kn3nI3Bbsbe5cd6hra8/jiQ2dbdFIhDdME0uLi0pqam586uKV1+h8+Q/Osmn81xJ8Hvxb3/j6M59rHEdvYmvH85vv3fK1HTv7pIS/mTT6GqBTHUtd8cDk+vBub1iIXz55DlbYPYprlsndNjggx/ra98c3Rx9q7pY9trNCGmQPHojvxMZoOwROAR9Q+MS2hkRbX8tXfaanGwAn3CY4ALSH2qW+SIvYFg8H0eKJockbQdBTj6gdRNzXiGp9ETyzpEjC01uKCVv0OSSFW4H379sfBRD4uIQaAPvy9TMJOWS3NIR53Bnuwt2NX0JQCoIDQdQbw66WfWjxx3GGHsNkAwvKQZIoNsAj1ALv37ffB+AuAMsAlkZHTpg37wU6JerzmAh4TTT4OLQFIuCIB4QQeAURzUIQFAEEvTb8Hh1ekdTVB4KiUGPsEoAogOSn4QCgrVp5r2WXHGMZGe04xlbSaAvsQnvgUZStJBaUEaTVC1DMKQi6rnOGW/LZISLUUvPRkRPl/n37rwLo79+3nwEoAigAsFaXMtTMLM9ZnfmSYn8QWlDHUe/h4LgPwqTzyFb/huXqGCzLx4yMlaquOJeWM/M5oadrw/+KvQ3AOgCtAGIAqgAyAJIAFAAigFCsdR0rXy9fzDfo92qN/H2bdkjw8FOo2ENg7gLCdQqyJQ/yk0YhO2m8wUv2OQBUWFxcwNE3Zj4K1YfC4WBw9OXfDf2yf9/+hwF0AGgDsAbgOoAUgDOjIydyn7ECFj8ek5GYJzfzb+k7QSruETsnwiSyBN0wkV4uODOT9rWZ89pfi2k2VFi80Q3Jzv7+g4SIg5IoLrvgznwMSgOYBjA3OnKiWMtuyXsg3/+QuL37DvnBTd3CpmiYhAzLpQuL7sLktHX+wrj6fuoKPmnj/wG1Jc98TP5pLwAAAABJRU5ErkJggg=='
    Return Binary(_Base64Decode($ScanNew32x32png))
EndFunc   ;==>_ScanNew32x32png

Func Computer32x32() ;Original OK
    Local $Base64String = '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'
    $Base64String &= 'dMDxj1Yk5K9AX18f/tXRjp4eO4p27ZLWrl0blZ2dvXfNmjW/mTFjhlktPAcGBpT3IbTmr6paxNLbMlhTU/NOa2vrEQLinQTgWFmZMzkpKSZt/nyYzWZxHwh9iYkh8ryd4oBYcN396uu4eJPpDaqSjvDvqgHeeOao1TBPtRgq71RJ1Cq4vLz8zcuXL79FMTMhjkRW0xsQu/6Xvxj58s6XUovNhjiqB1evXs0vI/ZeZaWxq6vL+VR+vmTQ69dRpXyOvI9UDxbRJE8MDW25HmLBt5FaW1vbH0mmyQBoU7TBYEijcZHP5zNRirCIiIgBCqh/Uu8k/T18H2XBDCpWnyUpNq5ateo50t5CcaDnKaUa5WB4zU+sBCmGvqNb1Xbp0qULlF0tBMQzSYIp5uoYXt6rXunIc55fs8jwHGIvnQqZJAIWxxmh/6QcFDv27u7uBwS+h/aPUPfI4TRNAeC/aVJYVwGHV2qPPOCxtscO4N+zbf1+lKO2XAAAAABJRU5ErkJggg=='
    Return Binary(_WinAPI_Base64Decode($Base64String))
EndFunc   ;==>_Base64String

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

 

Link to comment
Share on other sites

Link to comment
Share on other sites

Maybe this will help us understand, do you mean like the _ArrayDisplay function, how it displays a column of numbers for the rows?

ex:Capture.thumb.PNG.4ca5e650754aa4681a3247

 

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Link to comment
Share on other sites

Try this:

 

#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GuiScrollBars.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Opt("GUIOnEventMode", 1)

Global $MainGui, $MsgOk, $MainGuiRefresh, $MainGuiLabelInfo

Global $MainGuiW = @DesktopWidth - 10, $MainGuiH = @DesktopHeight - 90

_GDIPlus_Startup()
Global $Notebook = _GDIPlus_BitmapCreateFromMemory(ScanNew32x32(), True) ;GDI bitmap
Global $Computer = _GDIPlus_BitmapCreateFromMemory(Computer32x32(), True) ;GDI bitmap
_GDIPlus_Shutdown()
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$MainGui = GUICreate("Test Sort", 800, 500, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPSIBLINGS)) ;
GUISetOnEvent($GUI_EVENT_CLOSE, "EventsCtrl")

$MMenuLVAD = GUICtrlCreateListView("", 80, 82, 661, 321, -1, BitOR($LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_HEADERDRAGDROP, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVMMenu = GUICtrlGetHandle($MMenuLVAD);
GUICtrlSetOnEvent($MMenuLVAD, "_Setsort")
_GUICtrlListView_RegisterSortCallBack($MMenuLVAD)


$MMenuLVidx = GUICtrlCreateListView("", 4, 82, 76, 321,  BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
_GUICtrlListView_SetExtendedListViewStyle(-1,BitOR($LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES))
$hLVidx = GUICtrlGetHandle($MMenuLVidx);
_GUICtrlListView_AddColumn($hLVidx, "#", 52, 1, -1)

;_GUIScrollBars_ShowScrollBar($hLVidx, $SB_BOTH, False) ;not working !!!
;;------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;Add columns
_GUICtrlListView_AddColumn($MMenuLVAD, "", 30)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 1", 80, 3)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 2", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 3", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 4", 80)

; Load images
Global $hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_Add($hImage, $Computer)
_GUIImageList_Add($hImage, $Notebook)
_GUIImageList_AddIcon($hImage, @SystemDir&"\"&"shell32.dll", 146)
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($MMenuLVAD, 0xff442211, 32, 32))

_GUICtrlListView_SetImageList($MMenuLVAD, $hImage, 1) ;   1 - Image list with small icons
_GUICtrlListView_SetImageList($MMenuLVidx, $hImage, 1) ;   1 - Image list with small icons


For $i = 0 To 50
    _GUICtrlListView_AddItem($MMenuLVAD, "", 777) ;777 should be an index that not exists in the array
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "Computer" & Random(13467, 23452, 1), 1, 0)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "User" & Random(100, 500, 1), 2, 1)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(25, 5000, 1), 3,2)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(1, 800, 1), 4,3)
    _GUICtrlListView_AddItem($MMenuLVidx, $i, 4)
Next

GUISetState(@SW_SHOW)

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVidx, 0)
$RecidxDim1 = $Recidx[3] - $Recidx[1]

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVAD, 0)
$RecidxDim2 = $Recidx[3] - $Recidx[1]

GUIRegisterMsg($WM_NOTIFY, "WM_Notify")

While 1
    Sleep(10)
WEnd


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hLVMMenu
            ;This two lines to sincronize ListViewRowNumbers------------------------------------------------------------------
            Local $Lines = _SendMessage($hLVMMenu, $LVM_GETTOPINDEX) - _SendMessage($hLVidx, $LVM_GETTOPINDEX)
            _SendMessage($hLVidx, $LVM_SCROLL, 0, $Lines * $RecidxDim1)
            Return 0
        Case $hLVidx
            Local $Lines = _SendMessage($hLVidx, $LVM_GETTOPINDEX) - _SendMessage($hLVMMenu, $LVM_GETTOPINDEX)
            _SendMessage($hLVMMenu, $LVM_SCROLL, 0, $Lines * $RecidxDim2)
            Return 0
    EndSwitch
EndFunc

Func _Setsort()
    _GUICtrlListView_SortItems($MMenuLVAD, GUICtrlGetState($MMenuLVAD))
EndFunc   ;==>_Setsort

Func EventsCtrl()
    Local $Msg = @GUI_CtrlId
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            _GUICtrlListView_UnRegisterSortCallBack($MMenuLVAD)
            _WinAPI_DeleteObject($Notebook)
            _WinAPI_DeleteObject($Computer)
            GUIDelete()
            Exit
    EndSwitch
EndFunc   ;==>EventsCtrl

Func ScanNew32x32()
    Local $ScanNew32x32png = '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'
    $ScanNew32x32png &= 'bw7XdCI68NShV57/9jNPa1oFbx3/O6avXEEmley4Pjs7f/OZ7/7wxYOU0gFK6YBl21B1DaqhQOcsUJHNGtScLJZyb+vZ8qXCQnoCWShfSODT8LdPjaCjrR2xxoZXJ2ZmDv/iyE/Kn3nI3Bbsbe5cd6hra8/jiQ2dbdFIhDdME0uLi0pqam586uKV1+h8+Q/Osmn81xJ8Hvxb3/j6M59rHEdvYmvH85vv3fK1HTv7pIS/mTT6GqBTHUtd8cDk+vBub1iIXz55DlbYPYprlsndNjggx/ra98c3Rx9q7pY9trNCGmQPHojvxMZoOwROAR9Q+MS2hkRbX8tXfaanGwAn3CY4ALSH2qW+SIvYFg8H0eKJockbQdBTj6gdRNzXiGp9ETyzpEjC01uKCVv0OSSFW4H379sfBRD4uIQaAPvy9TMJOWS3NIR53Bnuwt2NX0JQCoIDQdQbw66WfWjxx3GGHsNkAwvKQZIoNsAj1ALv37ffB+AuAMsAlkZHTpg37wU6JerzmAh4TTT4OLQFIuCIB4QQeAURzUIQFAEEvTb8Hh1ekdTVB4KiUGPsEoAogOSn4QCgrVp5r2WXHGMZGe04xlbSaAvsQnvgUZStJBaUEaTVC1DMKQi6rnOGW/LZISLUUvPRkRPl/n37rwLo79+3nwEoAigAsFaXMtTMLM9ZnfmSYn8QWlDHUe/h4LgPwqTzyFb/huXqGCzLx4yMlaquOJeWM/M5oadrw/+KvQ3AOgCtAGIAqgAyAJIAFAAigFCsdR0rXy9fzDfo92qN/H2bdkjw8FOo2ENg7gLCdQqyJQ/yk0YhO2m8wUv2OQBUWFxcwNE3Zj4K1YfC4WBw9OXfDf2yf9/+hwF0AGgDsAbgOoAUgDOjIydyn7ECFj8ek5GYJzfzb+k7QSruETsnwiSyBN0wkV4uODOT9rWZ89pfi2k2VFi80Q3Jzv7+g4SIg5IoLrvgznwMSgOYBjA3OnKiWMtuyXsg3/+QuL37DvnBTd3CpmiYhAzLpQuL7sLktHX+wrj6fuoKPmnj/wG1Jc98TP5pLwAAAABJRU5ErkJggg=='
    Return Binary(_Base64Decode($ScanNew32x32png))
EndFunc   ;==>_ScanNew32x32png

Func Computer32x32() ;Original OK
    Local $Base64String = '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'
    $Base64String &= 'dMDxj1Yk5K9AX18f/tXRjp4eO4p27ZLWrl0blZ2dvXfNmjW/mTFjhlktPAcGBpT3IbTmr6paxNLbMlhTU/NOa2vrEQLinQTgWFmZMzkpKSZt/nyYzWZxHwh9iYkh8ryd4oBYcN396uu4eJPpDaqSjvDvqgHeeOao1TBPtRgq71RJ1Cq4vLz8zcuXL79FMTMhjkRW0xsQu/6Xvxj58s6XUovNhjiqB1evXs0vI/ZeZaWxq6vL+VR+vmTQ69dRpXyOvI9UDxbRJE8MDW25HmLBt5FaW1vbH0mmyQBoU7TBYEijcZHP5zNRirCIiIgBCqh/Uu8k/T18H2XBDCpWnyUpNq5ateo50t5CcaDnKaUa5WB4zU+sBCmGvqNb1Xbp0qULlF0tBMQzSYIp5uoYXt6rXunIc55fs8jwHGIvnQqZJAIWxxmh/6QcFDv27u7uBwS+h/aPUPfI4TRNAeC/aVJYVwGHV2qPPOCxtscO4N+zbf1+lKO2XAAAAABJRU5ErkJggg=='
    Return Binary(_WinAPI_Base64Decode($Base64String))
EndFunc   ;==>_Base64String

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

Currently I don't know to how to set the height of the cells in the left listview properly. I did it by adding also icons to the listview with the same size as in the right listview.

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

Try this:

#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GuiScrollBars.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Opt("GUIOnEventMode", 1)

Global $MainGui, $MsgOk, $MainGuiRefresh, $MainGuiLabelInfo

Global $MainGuiW = @DesktopWidth - 10, $MainGuiH = @DesktopHeight - 90

_GDIPlus_Startup()
Global $Notebook = _GDIPlus_BitmapCreateFromMemory(ScanNew32x32(), True) ;GDI bitmap
Global $Computer = _GDIPlus_BitmapCreateFromMemory(Computer32x32(), True) ;GDI bitmap
_GDIPlus_Shutdown()
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$MainGui = GUICreate("Test Sort", 800, 500, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPSIBLINGS)) ;
GUISetOnEvent($GUI_EVENT_CLOSE, "EventsCtrl")

$MMenuLVAD = GUICtrlCreateListView("", 80, 82, 661, 321, -1, BitOR($LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_HEADERDRAGDROP, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
$hLVMMenu = GUICtrlGetHandle($MMenuLVAD);
GUICtrlSetOnEvent($MMenuLVAD, "_Setsort")
_GUICtrlListView_RegisterSortCallBack($MMenuLVAD)


$MMenuLVidx = GUICtrlCreateListView("", 4, 82, 76, 321,  BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
_GUICtrlListView_SetExtendedListViewStyle(-1,BitOR($LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES))
$hLVidx = GUICtrlGetHandle($MMenuLVidx);

$iDLLUser32 = DllOpen("user32.dll")
$wProcNewLV = DllCallbackRegister("_LVWndProc", "ptr", "hwnd;uint;wparam;lparam")
$wProcOldLV = _WinAPI_SetWindowLong($hLVMMenu, $GWL_WNDPROC, DllCallbackGetPtr($wProcNewLV))
$wProcOldLV2 = _WinAPI_SetWindowLong($hLVidx, $GWL_WNDPROC, DllCallbackGetPtr($wProcNewLV))


_GUICtrlListView_AddColumn($hLVidx, "#", 52, 1, -1)

;_GUIScrollBars_ShowScrollBar($hLVidx, $SB_BOTH, False) ;not working !!!
;;------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;Add columns
_GUICtrlListView_AddColumn($MMenuLVAD, "", 30)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 1", 80, 3)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 2", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 3", 80)
_GUICtrlListView_AddColumn($MMenuLVAD, "Title 4", 80)

; Load images
Global $hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_Add($hImage, $Computer)
_GUIImageList_Add($hImage, $Notebook)
_GUIImageList_AddIcon($hImage, @SystemDir&"\"&"shell32.dll", 146)
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($MMenuLVAD, 0xff442211, 32, 32))

_GUICtrlListView_SetImageList($MMenuLVAD, $hImage, 1) ;   1 - Image list with small icons
_GUICtrlListView_SetImageList($MMenuLVidx, $hImage, 1) ;   1 - Image list with small icons


For $i = 0 To 50
    _GUICtrlListView_AddItem($MMenuLVAD, "", 777) ;777 should be an index that not exists in the array
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "Computer" & Random(13467, 23452, 1), 1, 0)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, "User" & Random(100, 500, 1), 2, 1)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(25, 5000, 1), 3,2)
    _GUICtrlListView_AddSubItem($MMenuLVAD, $i, Random(1, 800, 1), 4,3)
    _GUICtrlListView_AddItem($MMenuLVidx, $i, 4)
Next

GUISetState(@SW_SHOW)

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVidx, 0)
$RecidxDim1 = $Recidx[3] - $Recidx[1]

$Recidx = _GUICtrlListView_GetItemRect($MMenuLVAD, 0)
$RecidxDim2 = $Recidx[3] - $Recidx[1]

GUIRegisterMsg($WM_NOTIFY, "WM_Notify")

While 1
    Sleep(10)
WEnd


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hLVMMenu
            ;This two lines to sincronize ListViewRowNumbers------------------------------------------------------------------
            Local $Lines = _SendMessage($hLVMMenu, $LVM_GETTOPINDEX) - _SendMessage($hLVidx, $LVM_GETTOPINDEX)
            _SendMessage($hLVidx, $LVM_SCROLL, 0, $Lines * $RecidxDim1)
            Return 0
        Case $hLVidx
            Local $Lines = _SendMessage($hLVidx, $LVM_GETTOPINDEX) - _SendMessage($hLVMMenu, $LVM_GETTOPINDEX)
            _SendMessage($hLVMMenu, $LVM_SCROLL, 0, $Lines * $RecidxDim2)
            Return 0
    EndSwitch
EndFunc

Func _LVWndProc($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam, $lParam
    Switch $Msg
        Case $WM_NCCALCSIZE
            _RemoveVHScroll($hWnd)
        Case $WM_WINDOWPOSCHANGING
            Local $tWINDOWPOS = DllStructCreate($tagWINDOWPOS, $lParam)
            ;uncomment for mouse scrolling - no mouse scrolling without, but border is not erased (vertical key scrolling flickers visibly))
            DllStructSetData($tWINDOWPOS, "Flags", BitAND(DllStructGetData($tWINDOWPOS, "Flags"), BitNOT($SWP_FRAMECHANGED)))
    EndSwitch
    ;pass the unhandled messages to default WindowProc
    Local $aResult = DllCall($iDLLUser32, "lresult", "CallWindowProcW", "ptr", $wProcOldLV, "hwnd", $hWnd, "uint", $Msg, "wparam", $wParam, "lparam", $lParam)
    If @error Then Return -1
    Return $aResult[0]
EndFunc   ;==>_LVWndProc

Func _RemoveVHScroll($hWnd)
    Local $iLVStyle = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
    $iLVStyle = BitAND($iLVStyle, BitNOT($WS_VSCROLL))
    $iLVStyle = BitAND($iLVStyle, BitNOT($WS_HSCROLL))
    _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, $iLVStyle)
EndFunc   ;==>_RemoveVHScroll


Func _Setsort()
    _GUICtrlListView_SortItems($MMenuLVAD, GUICtrlGetState($MMenuLVAD))
EndFunc   ;==>_Setsort

Func EventsCtrl()
    Local $Msg = @GUI_CtrlId
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            If $wProcOldLV Then _WinAPI_SetWindowLong($hLVMMenu, $GWL_WNDPROC, $wProcOldLV)
            If $wProcOldLV2 Then _WinAPI_SetWindowLong($hLVidx, $GWL_WNDPROC, $wProcOldLV2)
            DllCallbackFree($wProcNewLV)
            GUIDelete($MainGui)
            DllClose($iDLLUser32)
            _GUICtrlListView_UnRegisterSortCallBack($MMenuLVAD)
            _WinAPI_DeleteObject($Notebook)
            _WinAPI_DeleteObject($Computer)
            Exit
    EndSwitch
EndFunc   ;==>EventsCtrl

Func ScanNew32x32()
    Local $ScanNew32x32png = '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'
    $ScanNew32x32png &= 'bw7XdCI68NShV57/9jNPa1oFbx3/O6avXEEmley4Pjs7f/OZ7/7wxYOU0gFK6YBl21B1DaqhQOcsUJHNGtScLJZyb+vZ8qXCQnoCWShfSODT8LdPjaCjrR2xxoZXJ2ZmDv/iyE/Kn3nI3Bbsbe5cd6hra8/jiQ2dbdFIhDdME0uLi0pqam586uKV1+h8+Q/Osmn81xJ8Hvxb3/j6M59rHEdvYmvH85vv3fK1HTv7pIS/mTT6GqBTHUtd8cDk+vBub1iIXz55DlbYPYprlsndNjggx/ra98c3Rx9q7pY9trNCGmQPHojvxMZoOwROAR9Q+MS2hkRbX8tXfaanGwAn3CY4ALSH2qW+SIvYFg8H0eKJockbQdBTj6gdRNzXiGp9ETyzpEjC01uKCVv0OSSFW4H379sfBRD4uIQaAPvy9TMJOWS3NIR53Bnuwt2NX0JQCoIDQdQbw66WfWjxx3GGHsNkAwvKQZIoNsAj1ALv37ffB+AuAMsAlkZHTpg37wU6JerzmAh4TTT4OLQFIuCIB4QQeAURzUIQFAEEvTb8Hh1ekdTVB4KiUGPsEoAogOSn4QCgrVp5r2WXHGMZGe04xlbSaAvsQnvgUZStJBaUEaTVC1DMKQi6rnOGW/LZISLUUvPRkRPl/n37rwLo79+3nwEoAigAsFaXMtTMLM9ZnfmSYn8QWlDHUe/h4LgPwqTzyFb/huXqGCzLx4yMlaquOJeWM/M5oadrw/+KvQ3AOgCtAGIAqgAyAJIAFAAigFCsdR0rXy9fzDfo92qN/H2bdkjw8FOo2ENg7gLCdQqyJQ/yk0YhO2m8wUv2OQBUWFxcwNE3Zj4K1YfC4WBw9OXfDf2yf9/+hwF0AGgDsAbgOoAUgDOjIydyn7ECFj8ek5GYJzfzb+k7QSruETsnwiSyBN0wkV4uODOT9rWZ89pfi2k2VFi80Q3Jzv7+g4SIg5IoLrvgznwMSgOYBjA3OnKiWMtuyXsg3/+QuL37DvnBTd3CpmiYhAzLpQuL7sLktHX+wrj6fuoKPmnj/wG1Jc98TP5pLwAAAABJRU5ErkJggg=='
    Return Binary(_Base64Decode($ScanNew32x32png))
EndFunc   ;==>_ScanNew32x32png

Func Computer32x32() ;Original OK
    Local $Base64String = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAHJElEQVR42s1Xa1CU1xl+vt3losDqslwUF1EakYtCDGY0SWupyeRHbDsJ40x+GNtqvf6o2kFTM0a8zBgFjBU0JHa8hEmmrXQ06WSIF8DlskSTWpOYcQi1Y2HIAMtV2F32/p2+53z7wccCNtOZjj0zh3POfmfO+7zP877nvEh4zE36vwXQ0tKidzqdJxwOR67YKEmia+fatbYxxkTXzsPXkZGRcnJy8sVpAdy6dWtlVVXVzfb2dgSDQeh0OtG5Me2oBcDHcEOyLE85BgIB7N271zMtAJvN9uPz58832JkRL79+bNw7lTSJz9kEMpmk7gkbmTLn3S8z3GpuhPfTSmzduhXSgwcPIuOMcYZgIBgcGRnxZWRksBADBWfOnLH2yEZsOFA66SCmWY99k5QRmj3a+Ygf6HDJ6LjdhMCnpxUAV69fc81LmTczNiaG6yI2Dg0Owmg0ori4GHY2G6+9WTLBYLgRLbCpjJPT6Bll6PMq/HV9RQCuhADcaGhgP1i4EHq9HvHx8ULvK1euoKCgAEVFRQTAhFffKBk/mH0Pw5rfvTLQ6ZDhDnLjkpCu524zgldPYcuWLZCabM1s0ROLIJPh2bNnw0/BcbW2DgU/fA67d++GXTah8Hcl0xqexIYGzEPyuNslK3tE1ijf7N8QgGsVCoB6q5Utzsig6Awi3hQPh8+Pz7/rwtMJJuzhAFg8flb0aADhDAjKyfAwp1yNWRUA9d5vbAheP6kAuHr9OsvOzBTpkZCQgBGPB5988Xe8tDQbe/bsQS8z48VdIQCqt2wKICEQnoDitV9WDYe8D2UOX/fds0GuPYnNmzdD+qSmhi3JyQEjAImJifB6vaitq8MzK1di3759JIEZP9p65D9TT3+GSfB+NxtLU0kK3XQa7/kw8O1n0DecwoYNGyB99NeP2dIlS8UJScnJcLvdqKutxbJly3D8+HH0BOLx5PpiQStC9I4HpHITUHyhj6Lc7WdjRlQAqvfS2JqyrO0mJOtJBcCf/1LN8nJzxYkpc+fC5XKhvr4eWdnZOHb0KPpYIvI3HtN4zyZI4AmQR25ZgIDWUJju0liX0N9qA268jU2bNkH6U/VFtiwvT5w4lwDQ/Q+r1SoY2L9/P+zBBOT9qmSS7pwJBwWZw8fGtZ7gqaQxqoJQfhtobQGsZUoMVH34AUmwBBEGAyyWVLgIQENDA3LzcnGg+ABJYEbWutIxo4JyCrBhjwwfd1tDsdZTvtACkHTj64FvOYBSJQvOXjhPWZAlbsF0upBGR0cFgCUE6uDBg+j2m5H+aumY3t4A91wWc22Ajes+vWFVgoE2ksBaotyEfzh3lmURgOioKKSnp2OUYqCxsVHEwCEBIAHzChUJRinIvIFxytWbTXv4GAP0UOq0YDRABttawKxHsW3bNkin361k2VlZmGWchQUL0kgCF5qamrCY7obDhw6hy2eG+aelcPuUQAsPsHB9JZ0y12nmUth8kBhg1rewfft2SO+89y7LzFiM1NRUmOkt4FnAAdCriMOHD2PQY4BuwQt0gA56nV6pC/R8PnFU6gVeD4TefTEqc37HqGt+4bn6OuBuvYYdO3ZAOlVZyTIzCcA8CxLpJuRZ0NzcLABUVFQIMP+Lxh+/srIyj1R++jTLXJyBVMqApKQkAeBGfR2WL38aHR0dMERECC9iZs5sjIqK0lYg4tbs7OyMM5lM+drfh4aGblssFmd0dPSjMMjE9kXpREW5eIzSUueDajQ4Hz7E7cYG/OTlV1D1/vtwkiRxs4ycHf36da/J4aesWLHi+Z07d9ap5RZ/zom55+/cuXPj+zAhHT/5e7YwLY30N2POnGTofD50f3ETi176Oe7du4ceux2DQ4O8htMV7fqtYKCwsHBmSkrKk7Gxsbk5OTm/pr7c7/djeHgYvb29uH///t/sdvs5iou7/f39X1dXV49OC6D0xNtsvsUCC8UAl8Dn'
    $Base64String &= 'dMDxj1Yk5K9AX18f/tXRjp4eO4p27ZLWrl0blZ2dvXfNmjW/mTFjhlktPAcGBpT3IbTmr6paxNLbMlhTU/NOa2vrEQLinQTgWFmZMzkpKSZt/nyYzWZxHwh9iYkh8ryd4oBYcN396uu4eJPpDaqSjvDvqgHeeOao1TBPtRgq71RJ1Cq4vLz8zcuXL79FMTMhjkRW0xsQu/6Xvxj58s6XUovNhjiqB1evXs0vI/ZeZaWxq6vL+VR+vmTQ69dRpXyOvI9UDxbRJE8MDW25HmLBt5FaW1vbH0mmyQBoU7TBYEijcZHP5zNRirCIiIgBCqh/Uu8k/T18H2XBDCpWnyUpNq5ateo50t5CcaDnKaUa5WB4zU+sBCmGvqNb1Xbp0qULlF0tBMQzSYIp5uoYXt6rXunIc55fs8jwHGIvnQqZJAIWxxmh/6QcFDv27u7uBwS+h/aPUPfI4TRNAeC/aVJYVwGHV2qPPOCxtscO4N+zbf1+lKO2XAAAAABJRU5ErkJggg=='
    Return Binary(_WinAPI_Base64Decode($Base64String))
EndFunc   ;==>_Base64String

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

 

I'm not sure whether I initialized the callback properly but it works for me. 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...