Ein eigenes Steuerelement für Verlaufsdaten, Teil 7
13.11.2023, 00:00 Uhr
MRU-Programme ermitteln
In der Windows-Registry gespeicherte Dokumente und Programme auslesen.
Wie man die in der Registry binär abgelegten Infos zu MRU-Dokumenten (Most Recently Used) ausliest, haben Sie in der vorangegangenen Folge dieser Serie [1] erfahren. Allerdings werden nicht alle Einträge, die sich im Registrierschlüssel befinden, auch in der MRUListEx-Zusammenstellung aufgeführt. Aus diesem Grund wird nun die Funktion GetNonMRUListExElements definiert, die auch die noch nicht berücksichtigten Einträge ermittelt. Auch diese Funktion liefert die Kennungen der Elemente über ein Ganzzahldatenfeld zurück. Entsprechend der Funktion GetMRUListEx werden die Elemente über Indexwerte zusammengestellt. Dafür werden in GetNonMRUListExElements die Elemente der MRUListEx-Zusammenstellung ausgewertet, um im Anschluss daran alle im Registrierschlüssel vorhandenen Schlüsselnamen (RecentDocs_UserKey.GetValueNames) über eine For-Each-Schleife zu durchlaufen. Ob ein Name ein Element der MRUListEx-Aufstellung ist, prüft die Funktion IsMRUListExElement. Nur wenn dies nicht der Fall ist, wird das Element dem Datenfeld Elements hinzugefügt. Das Ergebnis wird an das aufrufende Programm zurückgegeben, vergleiche Listing 1.
Listing 1: Weitere Einträge auslesen
Function GetNonMRUListExElements(
ByVal CurrentUserSubKey As String) As Integer()
Dim Counter As Integer = -1
Dim Elements As Integer() = Nothing
Dim RecentDocs_UserKey As RegistryKey =
CurrentUser.OpenSubKey(CurrentUserSubKey, True)
Dim SortedElements As Integer() =
GetMRUListEx(CurrentUserSubKey)
For Each ElementName As String _
In RecentDocs_UserKey.GetValueNames
If ElementName <> "MRUListEx" Then
If IsMRUListExElement(SortedElements,
ElementName) = False Then
Counter = Counter + 1
ReDim Preserve Elements(Counter)
Elements(Counter) = CInt(ElementName)
End If
End If
Next
Return Elements
End Function
ByVal CurrentUserSubKey As String) As Integer()
Dim Counter As Integer = -1
Dim Elements As Integer() = Nothing
Dim RecentDocs_UserKey As RegistryKey =
CurrentUser.OpenSubKey(CurrentUserSubKey, True)
Dim SortedElements As Integer() =
GetMRUListEx(CurrentUserSubKey)
For Each ElementName As String _
In RecentDocs_UserKey.GetValueNames
If ElementName <> "MRUListEx" Then
If IsMRUListExElement(SortedElements,
ElementName) = False Then
Counter = Counter + 1
ReDim Preserve Elements(Counter)
Elements(Counter) = CInt(ElementName)
End If
End If
Next
Return Elements
End Function
Jetzt 1 Monat kostenlos testen!
Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
- + Digitales Kundenkonto,
- + Zugriff auf das digitale Heft,
- + Zugang zum digitalen Heftarchiv,
- + Auf Wunsch: Weekly Newsletter,
- + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar