Grüße... ja ich mal wieder
Heute wiedermal mit einer Frage... und zwar hab ich einen Datenexport (für Hardwaredaten) erstellt.
Wenn der Nutzer auf Export klickt wird er nach einem Verzeichnis gefragt per FileSelectFolder
So, nun wird eine .txt Datei erzeugt (_FileCreate) und die Daten dort hinein geschrieben.
Am Ende des Exports wird eine weitere Datei erzeugt, diesmal eine batch Datein (.bat).
In diese wird "start" & $ausgewählterOrdner & "\dateiname.txt" geschrieben und nach @tempdir kopiert.
Dieses batchfile wird danach gestartet um das Export-Log zu öffnen.
Der Fehler der nun dabei auftritt ist, dass wenn der Nutzer beim Export einen Ordner auswählt der ein Leerzeichen enthält, wie z.B. bei XP "Dokumente und Einstellungen", kann XP damit nicht umgehen und versucht nur "C:\Dokumente" zu öffnen.
Spoiler anzeigen
Func SysExport()
$GameData[0] = FileSelectFolder("Bitte das Zielverzeichnis für den Export auswählen.", "", 2, @MyDocumentsDir)
GUICtrlSetState($SysInfo_Export, $GUI_SHOW)
_FileCreate($GameData[0] & "\SystemInformationen.txt")
GUICtrlSetState($SysInfo_BarL_status, $GUI_SHOW)
GUICtrlSetData($SysInfo_Export, 10)
$Dump = FileOpen($GameData[0] & "\SystemInformationen.txt", 2)
GUICtrlSetData($SysInfo_Export, 20)
GUICtrlSetData($SysInfo_BarL_status, "Exportiere Daten . .")
FileWrite($Dump, "League of Legends - Get it fixed! Tool" & @CRLF & "Systeminformationen" & @CRLF)
GUICtrlSetData($SysInfo_Export, 30)
FileWrite($Dump, "______________________________________" & @CRLF & @CRLF)
GUICtrlSetData($SysInfo_Export, 40)
GUICtrlSetData($SysInfo_BarL_status, "Exportiere Daten . . .")
FileWrite($Dump, "Betriebssystem: " & $System[1] & " - " & $System[2] & @CRLF)
GUICtrlSetData($SysInfo_Export, 50)
FileWrite($Dump, "Servicepack: " & $System[3] & @CRLF)
GUICtrlSetData($SysInfo_Export, 60)
GUICtrlSetData($SysInfo_BarL_status, "Exportiere Daten . ")
;FileWrite($File, "###############################" & @CRLF)
FileWrite($Dump, "CPU Modell: " & $Hardware[1] & @CRLF)
GUICtrlSetData($SysInfo_Export, 70)
FileWrite($Dump, "CPU Taktung: " & $Hardware[4] & "x" & $Hardware[2] & " (aktuell: " & $Hardware[3] & ")" & @CRLF)
GUICtrlSetData($SysInfo_Export, 75)
GUICtrlSetData($SysInfo_BarL_status, "Exportiere Daten . .")
;FileWrite($File, "###############################" & @CRLF)
FileWrite($Dump, "Grafikkarte: " & $Hardware[8] & @CRLF)
FileWrite($Dump, "Grafikspeicher: " & $Hardware[9] & @CRLF)
FileWrite($Dump, "Treiberdatum: " & $Hardware[10] & @CRLF)
GUICtrlSetData($SysInfo_Export, 80)
;FileWrite($File, "###############################" & @CRLF)
FileWrite($Dump, "Mainboard: " & $Hardware[12] & " (OEM: " & $Hardware[11] & ")" & @CRLF)
FileWrite($Dump, "Arbeitsspeicher: " & $Hardware[6] & " (" & $Hardware[7] & " Modul(e))" &@CRLF)
GUICtrlSetData($SysInfo_Export, 90)
GUICtrlSetData($SysInfo_BarL_status, "Exportiere Daten . . .")
Sleep(500)
FileClose($Dump)
Sleep(500)
; => Hier gehts los mit Batch
_FileCreate(@TempDir & "\SystemInformationen.bat")
GUICtrlSetData($SysInfo_Export, 100)
$Dump = FileOpen(@TempDir & "\SystemInformationen.bat", 2)
sleep(100)
FileWrite($Dump, "start " & $GameData[0] & "\Systeminformationen.txt")
GUICtrlSetData($SysInfo_BarL_status, "Fertig! Öffne Exportdatei")
FileClose($Dump)
Run(@TempDir & "\SystemInformationen.bat", @TempDir)
GUICtrlSetData($SysInfo_BarL_status, "Datei geöffnet!")
GUICtrlSetState($SysInfo_Export, $GUI_HIDE)
Sleep(3000)
GUICtrlSetState($SysInfo_BarL_status, $GUI_HIDE)
EndFunc
Daher die Frage... kann man dies auch irgendwie anderst lösen... z.B. das Notepad starten und diesem eine Datei zum öffnen übergeben?