Hallo,
ich habe eine Listebox, welche mir PDFs auflistet, beim klicken auf ansehen den Adobe Reader startet und beim beenden von diesem die Datei löscht. Erweitere ich nun das ganze um den Dateityp txt, passiert nichts - logisch, weil kein Programm definiert ist - und die Datei wird einfach gelöscht. Wie bekomme ich es hin, das verschiedene Dateitypen mit fest definierten Programmen aufgerufen werden? Ein einfacher Aufruf mit process.start kommt nicht in Frage, da ich den laufenden Prozess überwache musss, wegen dem Löschen am Ende. Darum brauche ich feste Namen
Danke
ich habe eine Listebox, welche mir PDFs auflistet, beim klicken auf ansehen den Adobe Reader startet und beim beenden von diesem die Datei löscht. Erweitere ich nun das ganze um den Dateityp txt, passiert nichts - logisch, weil kein Programm definiert ist - und die Datei wird einfach gelöscht. Wie bekomme ich es hin, das verschiedene Dateitypen mit fest definierten Programmen aufgerufen werden? Ein einfacher Aufruf mit process.start kommt nicht in Frage, da ich den laufenden Prozess überwache musss, wegen dem Löschen am Ende. Darum brauche ich feste Namen
Danke
VB.NET-Quellcode
- Imports System.IO
- Public Class Share
- Private Sub Aktualisieren_Click(sender As Object, e As EventArgs) Handles Aktualisieren.Click, Aktualisieren.Click
- If System.IO.File.Exists("C:\Justiz\share.txt") Then 'Prüfen ob Konfig Datei vorhanden ist
- Else
- MessageBox.Show("Die Konfigurationsdatei für den Pfad des Shares ist nicht vorhanden oder nicht im selben Ordner wie das Programm.")
- End If
- Dim SharePfad As String
- SharePfad = My.Computer.FileSystem.ReadAllText("C:\Justiz\share.txt")
- Dim directory As New System.IO.DirectoryInfo(SharePfad)
- For Each file1 As System.IO.FileInfo In directory.GetFiles
- If file1.Extension = ".pdf" Or file1.Extension = ".PDF" Then
- ListBox1.Items.Add(file1.FullName)
- End If
- Next
- ListBox1.Sorted = True
- For i As Integer = ListBox1.Items.Count - 1 To 1 Step -1
- If ListBox1.Items(i).ToString = ListBox1.Items(i - 1).ToString Then ListBox1.Items.RemoveAt(i)
- Next
- Ansehen.Enabled = True
- ListBox1.SelectedIndex = 0
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Ansehen.Click
- If ListBox1.SelectedItem Is Nothing = False Then
- Process.Start(ListBox1.SelectedItem)
- End If
- Dim AdobeProcess As String = "AcroRd32"
- For Each Prozess As Process In Process.GetProcesses()
- Next
- If Process.GetProcessesByName(AdobeProcess).Count > 0 Then
- If MsgBox("Die angezeigte Date wird nach dem Schließen des Adobe Readers gelöscht!", vbOKOnly, "Hinweis") = vbOK Then
- Me.Hide()
- Else
- End If
- End If
- Do
- If Process.GetProcessesByName(AdobeProcess).Count > 0 Then
- Else
- Exit Do
- End If
- Loop
- 'MsgBox("Die angezeigte Datei wird nun gelöscht!", MsgBoxStyle.Information, "Hinweis")
- My.Computer.FileSystem.DeleteFile(ListBox1.SelectedItem) 'geht nicht: wird von anderem Prozess verwendet
- Me.Close()
- End Sub
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Beenden.Click
- Me.Close()
- End Sub
- Private Sub Share_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Ansehen.Enabled = False
- End Sub
- End Class