WinFuture-Forum.de: Vb.net: Openfiledialog Kastriert Shell - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Vb.net: Openfiledialog Kastriert Shell


#1 Mitglied ist offline   divus 

  • Gruppe: aktive Mitglieder
  • Beiträge: 36
  • Beigetreten: 28. Januar 06
  • Reputation: 0

  geschrieben 29. Mai 2008 - 10:30

Hallo miteinander,

ich bin gerade eben auf einen ... ich würde es Bug nennen ... in VB.NET gestoßen.

Folgendes ist mein Ziel:

Ein Converter, der eine Datei nimmt, entsprechend konvertiert, mit einem öffentlichen Schlüssel eine Signaturdatei aus der umgewandelten Datei generiert und dann diese beiden Dateien auf einen FTP schiebt.

Soweit klappt das auch alles.

Meine Form enthält zwei Textboxen:
txt_pfad und
txt_ziel

Für txt_pfad wird mit dem OpenFileDialog die Orginaldatei gewählt und in die Box geschrieben.
Für txt_ziel wird mit FolderBrowserDialog lediglich der Ort bekannt gegeben, wo die umgewandelte Datei gespeichert werden soll, bevor sie auf den FTP geschoben wird.

Folgendes Problem tritt nun auf:

Sobald ich die Konvertierung starte, müsste danach eine Shell aufgehen und mich nach dem PublicKey für die Signaturdatei fragen. Die Shell geht zwar auf, aber auch mit der gleichen Geschwindigkeit wieder zu, weshalb ich die Fehlermeldung nicht lesen kann.
Das passiert, wenn ich die Orginaldatei mithilfe des OpenFileDialogs wähle.

Wenn ich den Pfad der Datei allerdings einfach so in die txt_pfad reinschreibe, funktioniert die ganze Sache reibungslos. Die Shell geht auf und wartet brav auf meine Eingabe.
Übrigens reagiert die zweite Shell für den FTP Upload genauso.

Wenn ich im OpenFileDialog keine Datei wähle sondern auf Abbrechen klicke und dann frei Hand den Code eingeben funktioniert es auch. Aber sobald ich im Dialog auf OK klicke und danach den Pfad eintrage habe ich wieder oben genannten Fehler.

Hier mal etwas Code um sich das besser vorstellen zu können:

Hier der Aufruf des OpenFileDialog

    Private Sub cmd_open_file_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_open_file.Click
        OpenFileDialog1.ShowDialog()
        txt_pfad.Text = OpenFileDialog1.FileName
    End Sub


Der Shell-Aufruf zum verschlüsseln der konvertierten Datei

    Function write_sig(ByVal path As String, ByVal sig_extension As String)
        'Signaturdatei wird geschrieben
        Shell("openssl.exe dgst -md5 -binary -out " & path & sig_extension & " -sign elster.pem " & path, AppWinStyle.NormalFocus, True)
        Return True
    End Function


Der Aufruf der Funktion write_sig die sich in dem Objekt crypt befindet

crypt.write_sig(txt_ziel.Text & filename, ".sig")


Der neue Dateiname wird aus der Orginaldatei generiert

filename = strFunc.make_filename(txt_pfad.Text.Substring(txt_
pfad.Text.LastIndexOf("\") + 1), "zm", "bz100000000", "b01", "l01", "01", "q", "ca", "mgt")


Und hier die entsprechende Funktion

    Function make_filename(ByVal filename As String, Optional ByVal pb As String = "zm", Optional ByVal bzstnr As String = "bz100000000", Optional ByVal processID As String = "b01", Optional ByVal distributorID As String = "l01", Optional ByVal version As String = "v01", Optional ByVal sequence As String = "q", Optional ByVal codepage As String = "ca", Optional ByVal extension As String = "mgp")
        Dim datum As String
        Dim position As Integer
        position = filename.LastIndexOf(" ", filename.LastIndexOf(" ") - 1)
        datum = filename.Substring(position, filename.LastIndexOf(".") - position)
        get_path_date(datum)
        Return "m5_" & pb & "_" & bzstnr & "_" & processID & distributorID & "_v" & version & "_z" & datum & "_" & sequence & Now.Year.ToString.Substring(2) & get_act_days() & "_" & codepage & "." & extension
    End Function

    Function get_path_date(ByRef datum As String)
        Dim month As String
        Dim year As String
        datum = datum.Trim
        month = datum.Substring(0, datum.IndexOf(" "))
        year = datum.Substring(datum.IndexOf(" "))
        month = month.Trim
        datum = year.Trim

        Select Case month
            Case 1
                datum = datum & "0101"
            Case 4
                datum = datum & "0401"
            Case 7
                datum = datum & "0701"
            Case 10
                datum = datum & "1001"
        End Select
        Return True
    End Function


Hat irgendjemand eine Idee, was ich hier machen könnte?
Bzw. weiß jemand wie ich in VB.NET das Shell-Fenster offen halten kann, obwohl die Verarbeitung schon erledigt ist, damit ich zumindest die Fehlermeldung sehen kann?

Ich bin dankbar für jeden Tipp

Gruß divus

Dieser Beitrag wurde von divus bearbeitet: 29. Mai 2008 - 10:31

0

Anzeige



#2 Mitglied ist offline   divus 

  • Gruppe: aktive Mitglieder
  • Beiträge: 36
  • Beigetreten: 28. Januar 06
  • Reputation: 0

geschrieben 29. Mai 2008 - 12:05

Problem gelöst.

Anscheinend stellt die OpenFileDialog.showDialog Methode das aktuelle Verzeichnis um. Deswegen hat er seine Schlüssel-Datei nicht mehr gefunden.

Wenn man den Code so ändert:

    Private Sub cmd_open_file_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_open_file.Click
        OpenFileDialog1.RestoreDirectory = True
        OpenFileDialog1.ShowDialog()
        txt_pfad.Text = OpenFileDialog1.FileName
    End Sub


klappt alles.

Vielen Dank für die Aufmerksamkeit :ph34r:
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0