diff --git a/Contrib/nsDialogs/Readme.html b/Contrib/nsDialogs/Readme.html
index a41a3f12..5a86af16 100644
--- a/Contrib/nsDialogs/Readme.html
+++ b/Contrib/nsDialogs/Readme.html
@@ -75,7 +75,11 @@ code
NSD_CB_AddString
NSD_CB_SelectString
NSD_LB_AddString
+NSD_LB_DelString
+NSD_LB_Clear
+NSD_LB_GetCount
NSD_LB_SelectString
+NSD_LB_GetSelection
NSD_SetFocus
NSD_SetImage
NSD_SetStretchedImage
@@ -727,12 +731,36 @@ SectionEnd
Adds a string to a list box.
+NSD_LB_DelString
+
+${NSD_LB_DelString} combo_HWND string
+
+Deletes a string from a list box.
+
+
+
+${NSD_LB_Clear} combo_HWND
+
+Deletes all strings from a list box.
+
+
+
+${NSD_LB_GetCount} combo_HWND output_variable
+
+Retrieves the number of strings from a list box.
+
NSD_LB_SelectString
${NSD_LB_SelectString} combo_HWND string
Selects a string in a list box.
+
+
+${NSD_LB_GetSelection} combo_HWND output_variable
+
+Retrieves the selected stringed from a list box. Returns an empty string if no string is selected.
+
NSD_SetFocus
${NSD_SetFocus} control_HWND
diff --git a/Contrib/nsDialogs/nsDialogs.nsh b/Contrib/nsDialogs/nsDialogs.nsh
index 99028659..62315e87 100644
--- a/Contrib/nsDialogs/nsDialogs.nsh
+++ b/Contrib/nsDialogs/nsDialogs.nsh
@@ -436,6 +436,30 @@ Header file for creating custom installer pages with nsDialogs
!define NSD_LB_AddString "!insertmacro _NSD_LB_AddString"
+!macro __NSD_LB_DelString CONTROL STRING
+
+ SendMessage ${CONTROL} ${LB_DELETESTRING} 0 `STR:${STRING}`
+
+!macroend
+
+!define NSD_LB_DelString `!insertmacro __NSD_LB_DelString`
+
+!macro __NSD_LB_Clear CONTROL VAR
+
+ SendMessage ${CONTROL} ${LB_RESETCONTENT} 0 0 ${VAR}
+
+!macroend
+
+!define NSD_LB_Clear `!insertmacro __NSD_LB_Clear`
+
+!macro __NSD_LB_GetCount CONTROL VAR
+
+ SendMessage ${CONTROL} ${LB_GETCOUNT} 0 0 ${VAR}
+
+!macroend
+
+!define NSD_LB_GetCount `!insertmacro __NSD_LB_GetCount`
+
!macro _NSD_LB_SelectString CONTROL STRING
SendMessage ${CONTROL} ${LB_SELECTSTRING} -1 `STR:${STRING}`
@@ -444,6 +468,17 @@ Header file for creating custom installer pages with nsDialogs
!define NSD_LB_SelectString "!insertmacro _NSD_LB_SelectString"
+!macro __NSD_LB_GetSelection CONTROL VAR
+
+ SendMessage ${CONTROL} ${LB_GETCURSEL} 0 0 ${VAR}
+ System::Call 'user32::SendMessage(i ${CONTROL}, i ${LB_GETTEXT}, i ${VAR}, t .s)'
+ Pop ${VAR}
+
+!macroend
+
+!define NSD_LB_GetSelection `!insertmacro __NSD_LB_GetSelection`
+
+
!macro __NSD_SetImage CONTROL IMAGE HANDLE
Push $0