Programm läd falsches DataSet

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von cmediapro.

    Programm läd falsches DataSet

    Liebe VBler,

    ich habe ein Problem.
    Und zwar geht es darum dass ich ein Script habe, welches es mir ermöglicht, ein anderes Programm zu starten. Dieses basiert darauf, dass das Script überprüft, ob ein USB Stick eingesteckt worden ist, und dann ein bestimmtes Programm (falls vorhanden) öffnet.
    Dieses zu öffnende Programm basiert auf einem typisierten DataSet (über XML)

    Soweit so gut, das funktioniert auch.

    Nun habe ich aber das Problem, dass das Script welches das Programm starten soll, sich selbst (aus dem anderen Programm???) eine XML zieht, und diese dann in den Hautordner des Scriptes kopiert. Anstelle der XML aus dem Programm wird nun IMMER diese XML geladen.
    Das bedeutet ja, dass wenn ich jetzt die eigentliche XML ändere, trotzdem die andere geladen wird...

    Kann mir jemand sagen, woran das wohl liegt?

    Das Script, welches das Hauptprogramm beim einstecken des USB-Sticks startet sieht folgendermaßen aus:


    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private allDrives As New List(Of DriveInfo)
    4. Private Const WM_DEVICECHANGE As Integer = &H219
    5. Private Const DBT_DEVICEARRIVAL As Integer = &H8000
    6. Private Const DBT_DEVICEREMOVECOMPLETE As Integer = &H8004
    7. Protected Overloads Overrides Sub WndProc(ByRef msg As Message)
    8. MyBase.WndProc(msg)
    9. If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEARRIVAL Then
    10. 'alle laufwerke durchlaufen und in der liste suchen
    11. For Each s As String In Directory.GetLogicalDrives
    12. find_driveinfo_arg = s
    13. Dim d As DriveInfo = allDrives.Find(AddressOf find_driveinfo)
    14. If d Is Nothing Then
    15. 'laufwerk wurde in der liste nicht gefunden und ist somit neu
    16. Dim pfad
    17. pfad = s & "PräsentationsStick.exe"
    18. Process.Start(pfad)
    19. 'laufwerk jetzt zur liste hinzufügen
    20. allDrives.Add(New DriveInfo(s))
    21. End If
    22. Next
    23. End If
    24. If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEREMOVECOMPLETE Then
    25. 'alle laufwerke aus der liste prüfen
    26. Dim temp As List(Of DriveInfo) = GetAllDrives()
    27. For Each d As DriveInfo In allDrives
    28. find_driveinfo_arg = d.Name
    29. Dim lost As DriveInfo = temp.Find(AddressOf find_driveinfo)
    30. If lost Is Nothing Then
    31. 'laufwerk wurde in der liste nicht mehr gefunden
    32. Dim ProcessArray() As Process = Process.GetProcessesByName("PräsentationsStick")
    33. For Each Process In ProcessArray
    34. Process.Kill()
    35. Next
    36. 'laufwerk aus der liste entfernen
    37. allDrives.Remove(d)
    38. 'schleife verlassen
    39. Exit For
    40. End If
    41. Next
    42. End If
    43. End Sub
    44. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    45. allDrives = GetAllDrives()
    46. End Sub
    47. Private Function GetAllDrives() As List(Of DriveInfo)
    48. Dim ret As New List(Of DriveInfo)
    49. 'und wieder befüllen
    50. For Each d As String In Directory.GetLogicalDrives
    51. ret.Add(New DriveInfo(d))
    52. Next
    53. Return ret
    54. End Function
    55. 'suchfunktion zum finden der laufwerke in der collection
    56. Private find_driveinfo_arg As String
    57. Private Function find_driveinfo(ByVal d As DriveInfo)
    58. If d.Name = find_driveinfo_arg Then
    59. Return True
    60. Else
    61. Return False
    62. End If
    63. End Function
    64. End Class


    Ist es so, dass das Script das Hauptprogramm dann in dem ich nenne es "Script"-Programm öffnet? Und dann merkt, dass keine XMl da ist und sich eine anlegt?

    Ich bitte um Hilfe...

    Beste Grüße,
    Chris

    cmediapro schrieb:

    VB.NET-Quellcode

    1. Process.Start(pfad)
    Machma sowas draus:

    VB.NET-Quellcode

    1. Dim pr As New Process
    2. pr.StartInfo.FileName = pfad
    3. pr.StartInfo.WorkingDirectory = pfad_sein_Verzeichnis ' Das hier setzen
    4. pr.Start()
    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!