HTA - Autogenerowanie przycisków

0

Witam,
Mam problem ponieważ: muszę zrobić skrypt VBS/HTA który pobierze listę zainstalowanych aplikacji z rejestru, wyświetli je i do każdego tego doda przycisk do ukrywania tej aplikacji w Dodaj/Usuń Programy. Przyciski są generowane razem z aplikacją:

' ******************* Pobieranie listy kluczy ********************** '
		Function getApps(keyPathString)
			Const HKEY_LOCAL_MACHINE = &H80000002
			Dim  strComp, objReg, appList, i
			i = -1
			strComp = "." 
			Set objReg = GetObject("winmgmts:\\" & strComp & "\root\default:StdRegProv")
			Set appList = CreateObject("System.Collections.ArrayList")
			Dim arrValueNames, fullKeyPath, insList
			objReg.EnumKey HKEY_LOCAL_MACHINE, keyPathString, arrValueNames
			For Each arrName In arrValueNames
				fullKeyPath = keyPathString & "\" & arrName
				strValueName  = "DisplayName"
				objReg.GetStringValue HKEY_LOCAL_MACHINE, fullKeyPath, strValueName, szValue
				'************************'
				If Not IsNull(szValue) Then
					strValueName2="SystemComponent"
					objReg.GetStringValue HKEY_LOCAL_MACHINE, fullKeyPath, strValueName2, szValue2
					If IsNull(szValue2) Then
						appList.Add  "<input type=" & "submit" &" onclick="& "HideIt" & " name=" & chr(34) & szValue & chr(34) & " id=" & chr(34) & szValue & chr(34) & " value=" & "Hide it!" & " />" &"     " & szValue 
						statList = statList & arrName & "<br/>"
						appList.Sort()						
					End If	
				End If
			Next
			getApps = appList.ToArray
		End Function

Sub HideIt() ' Funkcja wywoływana przez wygenerowane przyciski
	strKeyPath64 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
	listVar = getApps(strKeyPath64) 
	
End Sub

I cały problem pojawia się teraz bo nie wiem jak zrobić to żeby funkcja rozpoznawała jaki przycisk się do niej odwołał i zmieniała jego nazwę i ukrywała aplikacje przy której ten przycisk się znajdował.

0

Sam sobie odpowiem na pytanie jak by ktoś szukał lub miał podobny problem, więc:
Najzwyczajniem wystarczy przesłać argument który będzie generowany automatycznie wraz z każdym przyciskimem (btn_1, btn_2 ... btn_n) i przesłać go najzwyczajniej jak do procedury (call SubName btn_1). Należy do tego pamiętać o pojedyńczych apostrofach (') w HTA przy przesyłaniu stringów poprzez zmienną. Inaczej będzie krzyczał błędem o "Expected end of statement". Tak będzie to wyglądać:

btnList.Add "<input type=" & chr(34) & "submit" & chr(34) & "id=" & chr(34) & "btn"& i & chr(34) &  "name=" & chr(34) & szValue & chr(34) &_
" value=" & chr(34) & "Hide It" & chr(34) & " style = " & chr(34) & "margin-right: 5px" & chr(34) &_
"onClick=" & chr(34) & "hideIt " & i & ",'"  & appKeyPath & "'" & chr(34) & "/>"

1 użytkowników online, w tym zalogowanych: 0, gości: 1