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:
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
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
- Imports System.IO
- Public Class Form1
- Private allDrives As New List(Of DriveInfo)
- Private Const WM_DEVICECHANGE As Integer = &H219
- Private Const DBT_DEVICEARRIVAL As Integer = &H8000
- Private Const DBT_DEVICEREMOVECOMPLETE As Integer = &H8004
- Protected Overloads Overrides Sub WndProc(ByRef msg As Message)
- MyBase.WndProc(msg)
- If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEARRIVAL Then
- 'alle laufwerke durchlaufen und in der liste suchen
- For Each s As String In Directory.GetLogicalDrives
- find_driveinfo_arg = s
- Dim d As DriveInfo = allDrives.Find(AddressOf find_driveinfo)
- If d Is Nothing Then
- 'laufwerk wurde in der liste nicht gefunden und ist somit neu
- Dim pfad
- pfad = s & "PräsentationsStick.exe"
- Process.Start(pfad)
- 'laufwerk jetzt zur liste hinzufügen
- allDrives.Add(New DriveInfo(s))
- End If
- Next
- End If
- If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = DBT_DEVICEREMOVECOMPLETE Then
- 'alle laufwerke aus der liste prüfen
- Dim temp As List(Of DriveInfo) = GetAllDrives()
- For Each d As DriveInfo In allDrives
- find_driveinfo_arg = d.Name
- Dim lost As DriveInfo = temp.Find(AddressOf find_driveinfo)
- If lost Is Nothing Then
- 'laufwerk wurde in der liste nicht mehr gefunden
- Dim ProcessArray() As Process = Process.GetProcessesByName("PräsentationsStick")
- For Each Process In ProcessArray
- Process.Kill()
- Next
- 'laufwerk aus der liste entfernen
- allDrives.Remove(d)
- 'schleife verlassen
- Exit For
- End If
- Next
- End If
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- allDrives = GetAllDrives()
- End Sub
- Private Function GetAllDrives() As List(Of DriveInfo)
- Dim ret As New List(Of DriveInfo)
- 'und wieder befüllen
- For Each d As String In Directory.GetLogicalDrives
- ret.Add(New DriveInfo(d))
- Next
- Return ret
- End Function
- 'suchfunktion zum finden der laufwerke in der collection
- Private find_driveinfo_arg As String
- Private Function find_driveinfo(ByVal d As DriveInfo)
- If d.Name = find_driveinfo_arg Then
- Return True
- Else
- Return False
- End If
- End Function
- 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