Fehler beim öffnen einer Datei

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Fehler beim öffnen einer Datei

    hallo leute

    habe zwei mal den gleichen code. einmal um eine pdf datei zu öffnen und einmal um eine *.exe datei zu öffnen:

    code1:

    VB.NET-Quellcode

    1. Private Sub HilfeToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HilfeToolStripMenuItem1.Click
    2. If System.IO.File.Exists(Application.StartupPath & "\Datei Hilfe.pdf") Then
    3. Process.Start(Application.StartupPath & "\Datei Hilfe.pdf")
    4. Else
    5. msg_fehler.ShowDialog()
    6. End If
    7. End Sub



    code2:

    VB.NET-Quellcode

    1. Private Sub AnwendungToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnwendungToolStripMenuItem.Click
    2. Me.WindowState = FormWindowState.Minimized
    3. If System.IO.File.Exists(Application.StartupPath & "\Anwendung.exe") Then
    4. Process.Start(Application.StartupPath & "\Anwendung.exe")
    5. Else
    6. msg_updater.ShowDialog()
    7. End If
    8. End Sub




    Jetzt mein Problem: bei der *.exe-Datei funktioniert alles einwandfrei. es wird überprüft ob die datei vorhanden ist. wenn ja, dann wird sie geöffnet und wenn nicht, dann kommt eine msg-box.

    warum klappt das bei der *.exe-Datei ABER NICHT bei der *.pdf-Datei ?
    immer wenn ich dieses ausführe, kommt es zu einem schwerwiegenden fehler und das programm muss geschlossen werden.

    könnt ihr mir vielleicht weiterhelfen ?

    danke bereits im voraus
    Du kannst aber um den ganzen Dateinamen Apostrophen setzen:

    VB.NET-Quellcode

    1. Dim MyPdf As String = """" & Application.StartupPath & "\Datei Hilfe.pdf" & """"
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    nampf ...
    UseShellExecute=True!

    msdn.microsoft.com/de-de/libra…info.useshellexecute.aspx
    When you use the operating system shell to start processes, you can start any document (which is any registered file type associated with an executable that has a default open action) and perform operations on the file, such as printing, with the Process component. When UseShellExecute is false, you can start only executables with the Process component.

    MarcoIT schrieb:

    Since i tried it on my own PC...

    du verwendest kein Windows?

    VB.NET-Quellcode

    1. Dim p = New ProcessStartInfo("c:\temp\1 2.pdf") With {.UseShellExecute = True}
    2. Process.Start(p)


    funzt. qed.

    geht auch:

    VB.NET-Quellcode

    1. Dim p = New ProcessStartInfo(
    2. IO.Path.Combine(
    3. Application.StartupPath,
    4. "1 2 3.pdf")) With {.UseShellExecute = True}
    5. Process.Start(p)


    wo Problem?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „picoflop“ ()

    Lass doch mal mehr Info über den Fehler ausgeben ... un etwa so:

    VB.NET-Quellcode

    1. Dim filename As String = IO.Path.Combine(Application.StartupPath, "abcdef.pdf")
    2. If IO.File.Exists(filename) Then
    3. Try
    4. Process.Start(filename)
    5. Catch ex As Exception
    6. Dim info As String = "Fehler: " & ex.GetType.ToString
    7. info &= vbNewLine & "Fehler-Text: " & ex.Message
    8. If ex.InnerException IsNot Nothing Then info &= vbNewLine & "InnerException: " & ex.InnerException.Message
    9. MessageBox.Show(info, "Datei öffnen ...", MessageBoxButtons.OK, MessageBoxIcon.Error)
    10. End Try
    11. Else
    12. MessageBox.Show("Datei '" & filename & "' nicht gefunden.", "Datei nicht gefunden!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    13. End If
    Process.Start() mit einer PDF-Datei funktioniert bei mir problemlos.
    Probier es doch mal mit einer txt-Datei.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim p As New Process
    3. p.StartInfo.FileName = "C:\Projekte\blabla.pdf"
    4. p.Start()
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich nehme mal an, dass er jetzt gemerkt hat, wo der Unterschied liegt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!