tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1183
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    olek olek ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Beiträge
    36
    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
     

  2. #2
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Ich hab leider keine Ahnung wie du den Listview darstellst, aber probier das doch mal so:

    Code :
    1
    2
    3
    4
    5
    
     Open "software.txt" For Output As #Filenum
     For j = 0 To [b]ListView1.ListItems.Count - 1[/b]
     Print #Filenum,[b] ListView1.ListItems(j).Text[/b]
     Next j
     Close #F
     

  3. #3
    olek olek ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Beiträge
    36
    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}
     

  4. #4
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Um die KB's rauszubekommen würd ich mit

    Code :
    1
    2
    3
    
    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 :
    1
    2
    3
    
    if left(string,1) <> "{" AND right(string,1) <> "}" then
     'schreibe
    end if
     

  5. #5
    olek olek ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Beiträge
    36
    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
     

  6. #6
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
     ' ListView1 Daten in ein .txt schreiben
              Dim Filenum As Integer
              Dim j As Integer
      [b][i]dim cString as string[/i][/b]
      
              Filenum = FreeFile
              Open "C:\software.txt" For Output As #Filenum
              For j = 0 To ListView1.ListItems.Count - 1
      
      [i][b]cString = ListView1.ListItems(j).text
      
      [/b][/i]  if left(cString[size=5][b][color=Red],[/color][/b][/size]1) <> "{" AND right(cString[size=5][b][color=Red],[/color][/b][/size]1) <> "}" then 
         Print #Filenum, cString
      end if
      
              Next j
              Close #Filenum
        End If
     

Ähnliche Themen

  1. ListView Item auslesen?
    Von Olimar/Chris im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 19.03.10, 21:04
  2. Listview auslesen
    Von Primus852 im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 13.01.07, 18:01
  3. ListView Spalten auslesen
    Von nils31 im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 03.07.05, 18:20
  4. ListView in CSV schreiben
    Von Hannibal im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 06.12.04, 22:43
  5. In ListView Header schreiben!
    Von Hannibal im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 17.11.04, 10:31