ListView auslesen und in txt schreiben

olek

Mitglied
Servus @all
Habe die Software meines PCs ausgelesen und mittels ListView angezeigt. Möchte nun diese Liste in ein txt schreiben. Dabei hängt sich das Progi bei .ListCount und .List auf.
Der rote Code wurde bis jetzt immer für eine ListBox verwendet und daher nicht mehr mit ListView kompatibel. Da ich leider totaler VB-Anfänger bin weiss ich nun nicht wie ich bei ListView dies realisieren soll.
Weiters bräuchte ich nur die LINKE Spalte ausgelesen!
Kann wer helfen?
Bin für jede HILFE sehr dankbar
DANKE.

mfg alex :)

Private Sub Form_Load()
' Liste der deinstallierbaren Software
Dim SO As SearchOptions
Dim Gefunden() As String
Dim i As Integer
Dim Daten() As String
Dim DisplayName As String
Dim RegKey As String
Dim Folder As String
Dim itemX As ListItem

RegKey = "Software\Microsoft\Windows\" & _
"CurrentVersion\Uninstall"

With ListView1
.ListItems.Clear

' vb@rchiv-Tipp
'Durchsuchen der Registry wird benötigt!

' Alle Einträge im Schlüssel
' Software\Microsoft\Windows\CurrentVersion\Uninstall
' ermitteln
With SO
.HowToSearch = StringExists
.SearchMainKey = HKEY_LOCAL_MACHINE
.SearchString = "UninstallString"
.StartSearchPath = RegKey
.SearchSubfolders = True
.FindKeys = False
.FindValueNames = True
.FindValues = False
End With

' Suche starten
FindString SO, Gefunden
On Error Resume Next
For i = 0 To UBound(Gefunden)
Daten = Split(Gefunden(i), vbCrLf)

' SubKey
Folder = Mid$(Daten(0), InStrRev(Daten(0), "\") + 1)

' DisplayName ermitteln
DisplayName = Get_ValueString(HKEY_LOCAL_MACHINE, _
RegKey & "\" & Daten(1), "DisplayName")
If DisplayName = "" Then DisplayName = Folder

' ListView1 Daten in ein .txt schreiben

Dim Filenum As Integer
Dim j As Integer
Filenum = FreeFile
Open "software.txt" For Output As #Filenum
For j = 0 To ListView1.ListCount - 1
Print #Filenum, ListView1.List(j)
Next j
Close #F


Set itemX = .ListItems.Add(, Daten(0), DisplayName)
itemX.SubItems(1) = Daten(2)
Next i
End With
End Sub
 
Ich hab leider keine Ahnung wie du den Listview darstellst, aber probier das doch mal so:

Code:
 Open "software.txt" For Output As #Filenum
 For j = 0 To ListView1.ListItems.Count - 1
 Print #Filenum, ListView1.ListItems(j).Text
 Next j
 Close #F
 
WOW SUPER. HAT GEKLAPPT! DANKE!
Super Forum und tolle Leute *freu*:)
Klasse! Hab schon viele Foren ausprobiert aber dieses ist einfach klasse! Spitze!

Noch ein Zusätzliche Frage:
Wenn ich meine Software ausgebe so kommt diese wie unten angebeben raus.
KB.... sind die Windows Updates und { ... } sind glaube ich Update Backups von Windows oder so.
Wie schafft man es das man die Software die KB .... und {..} ausgibt nicht mit in die Liste nimmt?
Man müsst also in der Schleife in der z.B. ausgegeben wird alle Werte die mit KB beginnen oder die Klammern {} enthalten ausschließen
Kann dann natürlich sein dass zufällig eine Software mit KB beginnt aber dies nehm ich gerne in Kauf da dies ohnehin sehr selten vorkommt.

Hat wer eine Idee KB und {} in der Liste auszuschließen

DANKE DANKE für jede Hilfe von Euch!
mfg alex :-)

InstallShield for Microsoft Visual C++ 6
JCreator Pro_is1
KB834707
KB867282
KB873333
KB873339
Macromedia Shockwave Player
Magic ISO Maker v4.6 (build 0120)
{05BB2EC5-6BEF-4DDC-9E75-BEE7B161157A}
{0BEDBD4E-2D34-47B5-9973-57E62B29307C}
{0D396571-7BBD-44CE-ABB3-518BF86B72F7}
{1526D87C-A955-4FAB-BF18-697BA457E352}
 
Um die KB's rauszubekommen würd ich mit

Code:
if not left(string,2) = "KB" then
'Schreibe Daten
end if

Das Problem dabei wird sein, dass sobald ein String dann eben mit KB anfängt, dieser rausfliegt. Wenn sichergestellt ist das die Länge des KB###### immer 8 ist dann kann man die IF-Abfrage ausweiten mit AND len(string) = 8

Für die {} machst du

Code:
if left(string,1) <> "{" AND right(string,1) <> "}" then
 'schreibe
end if
 
Habe versucht dies einzufügen.
Jedoch schreibt er mir einen Compile Error beim Beistrich aus!
--> Compile Error: Expected: (


if left(string,1) <> "{" AND right(string,1) <> "}" then
Sag wo soll ich dann den Code genau eingeben?

' ListView1 Daten in ein .txt schreiben
Dim Filenum As Integer
Dim j As Integer
hier code eingeben ?
Filenum = FreeFile
Open "C:\software.txt" For Output As #Filenum
For j = 0 To ListView1.ListItems.Count - 1
Print #Filenum, ListView1.ListItems(j).Text
Next j
Close #Filenum
End If
 
Code:
 ' ListView1 Daten in ein .txt schreiben
          Dim Filenum As Integer
          Dim j As Integer
  dim cString as string
  
          Filenum = FreeFile
          Open "C:\software.txt" For Output As #Filenum
          For j = 0 To ListView1.ListItems.Count - 1
  
  cString = ListView1.ListItems(j).text
  
    if left(cString,1) <> "{" AND right(cString,1) <> "}" then 
     Print #Filenum, cString
  end if
  
          Next j
          Close #Filenum
    End If
 
Zurück