[Hilfe][VB.Net] Befehle aus .txt

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Hilfe][VB.Net] Befehle aus .txt

      Hallo liebe Godlikerz,

      Ich habe hier eine Konsolenanwendung.
      Ich möchte das die Anwendung die Commands.txt ausliest.
      Die Commands.txt soll so aufgebaut sein:

      c:\programme\adobe\photoshop\photoshop.exe
      photoshop

      c:\windows\editor.exe
      editor

      Also:

      Pfad
      Befehlname

      Pfad Befehlname

      Die Anwendung soll die Commands.txt so öffnen das er photoshop in ein Command umwandelt und somit den Pfad starten.

      Meine bisherigen Commands sind so aufgebaut:

      Quellcode

      1. If Antwort = "clear" Then
      2. COMMAND
      3. TEXTZEILE
      4. End If


      Also z.b.

      Quellcode

      1. If Antwort = "clear" Then
      2. Console.Clear()
      3. Console.WriteLine("Cleared.")
      4. End If


      Die neuen Command sollte dann etwa so aussehen:

      Quellcode

      1. If Antwort = "photoshop" Then
      2. Shell("c:\programme\adobe\photoshop\photoshop.exe", vbNormalNoFocus)
      3. Console.WriteLine("Photoshop geöffnet.")
      4. End If


      Quellcode

      1. If Antwort = "editor" Then
      2. Shell("c:\windows\editor.exe", vbNormalNoFocus)
      3. Console.WriteLine("Editor geöffnet.")
      4. End If


      Und so sollte man dann auch immer neue Commands hinzufügen können.

      Ich hoffe ihr könnt mir helfen. :)

      MfG
      Kaev
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Du kannst es so versuchen:
      StreamReader deklarieren(System.IO wird als import benötigt)
      Einige Strings deklarieren(bei dir wärens dann 4)
      Jede Zeile in einen String laden lassen(also mit dem deklarierten StreamReader)
      und dann einfach als Pfad bei Shell den String mit dem gelesenen Pfad
      als:
      Shell(StringPfad)
      StringPfad muss nicht gleich sein ^-^
      und bei Console.WriteLine dann einfach in die Klammern:
      (ProgrammName + " ist geöffnet")
      ProgrammName und ist geöffnet muss nicht gleich sein ^-^
      Ich hoffe du weist was ich meine. Kann leider im Moment nicht ausführlicher sein, weil ich gleich weg muss.
    • Hmm... Verstehen tue ich dich jetzt. Sry da kann ich dir nicht helfen. Weiß es selber nicht. Ich hatte es gewusst aber hab ne Zeit nicht mehr mit VB geproggt(ca. ein Jahr) bzw. nicht mehr häufig geproggt. Evtl. die Auslesen wie viel Zeilen vorhanden sind... wäre dann nur der Anfang und dabei kann ich dir helfen:

      Quellcode

      1. Dim Reader As New StreamReader("Test.txt")
      2. Dim Test as String
      3. Dim Zahl as Integer
      4. While (Test != "")
      5. Test = Reader.ReadLine()
      6. If Test != "" Then
      7. Zahl = Zahl + 1
      8. End If
      9. End While

      Kann es leider nicht testen bin grad mit der PsP in nem Internet Cafè(wie gesagt bin halt weg) Und leider gibts Visual Studio noch nicht für die PsP xD

      Naja hoffe es klappt...

      MFG
      xpr0keksx
    • Also ich würde dir vorschlagen, du machst solch eine ini :

      Quellcode

      1. [COM]
      2. Count=2
      3. [COM1]
      4. Shell=C:\programme\adobe\photoshop\photoshop.exe
      5. Com=photoshop
      6. [COM2]
      7. Shell=C:\windows\editor.exe
      8. Com=editor


      Das wird alles in ein 2D Array gelesen
      Array-0,0 enthält die Anzahl der Commands

      Und dann ließt du in einer For-Schleife ( 1 zu Array -0,0 ) die werte durch
      in Array x,1 ist der Command ( zB."editor" )
      und in Array x,2 ist der Pfad zur Anwendung .

      Ich würde dir noch empfehlen, eine Funktion einzubauen mit welcher der User neue Commands hinzufügen kann.
      Dann musst du nur wieder die ini auslesen lassen, dann "Count" durch 1 erhöhen und dann eine neue Sektion anlegen "COMX" , "X" ist hierbei die ID, bzw die aktuelle anzahl der Commands.
    • Erstmal danke für eure antworten. :P

      *electriZer* könntest du mir evtl. ein Codebeispiel nennen? Ich bin nicht grad der beste auf dem Gebiet und würde da sonst ein paar Stunden lang dran verzweifeln :3 (Vorallem weil ich noch nie mit einer For-Schleife gearbeitet habe ._.)

      Danke schonmal :)
      MfG
    • Am einfachsten ist sowas mit einer *.ini datei.

      Zum verwalten von INIDateien... hier eine kleine Klasse... viel spaß damit^^

      Quellcode

      1. Option Explicit On
      2. Public Class INIDatei
      3. 'Funktionen(DLL)zum LESEN einer *.INI deklarieren
      4. Private Declare Ansi Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
      5. ByVal lpApplicationName As String, ByVal lpSchlüsselName As String, ByVal lpDefault As String, _
      6. ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
      7. 'Funktion(DLL)zum SCHREIBEN in eine *.INI deklarieren
      8. Private Declare Ansi Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
      9. ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, _
      10. ByVal lpFileName As String) As Integer
      11. 'Funktion(DLL)zum Löschen einer gesammten Sektion deklarieren
      12. Private Declare Ansi Function DeletePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
      13. ByVal Section As String, ByVal NoKey As Integer, ByVal NoSetting As Integer, _
      14. ByVal FileName As String) As Integer
      15. ' Öffentliche Klassenvariablen (Der Pfad zur *.INI)
      16. Public INIpfad As String
      17. Public Function WertLesen(ByVal Sektion As String, ByVal Schlüssel As String, Optional ByVal Standardwert As String = "", Optional ByVal BufferSize As Integer = 1024) As String
      18. ' Testen, ob ein Pfad zur INI in die Variable INIpfad eingetragen wurde
      19. If INIpfad = "" Then
      20. MsgBox("Es ist kein Pfad zur INI angegeben. Deshalb ist das Auslesen des Wertes nicht möglich." _
      21. & vbCrLf & vbCrLf & "Angeforderte Sektion: " & Sektion & vbCrLf & "Angeforderter Schlüssel: " _
      22. & Schlüssel, MsgBoxStyle.Exclamation, "Pfad zur INI-Datei fehlt")
      23. WertLesen = "Lesefehler"
      24. Exit Function
      25. End If
      26. ' Testen, ob die *.INI Datei existiert
      27. If IO.File.Exists(INIpfad) = False Then
      28. MsgBox("Die angegebene INI-Datei exstiert auf diesem Rechner nicht. Deshalb ist das " _
      29. & "Auslesen des Wertes nicht möglich." & vbCrLf & vbCrLf & "INI-Datei: " & INIpfad _
      30. & vbCrLf & "Angeforderte Sektion: " & Sektion & vbCrLf & "Angeforderter Schlüssel: " _
      31. & Schlüssel, MsgBoxStyle.Exclamation, "Pfad zur INI-Datei fehlt")
      32. WertLesen = "Lesefehler"
      33. Exit Function
      34. End If
      35. ' Auslesen des Wertes
      36. Dim sTemp As String = Space(BufferSize)
      37. Dim Length As Integer = GetPrivateProfileString(Sektion, Schlüssel, Standardwert, sTemp, BufferSize, INIpfad)
      38. Return Left(sTemp, Length)
      39. End Function
      40. Public Sub WertSchreiben(ByVal Sektion As String, ByVal Schlüssel As String, ByVal Wert As String)
      41. ' Testen, ob ein Pfad zur INI in die Variable INIpfad eingetragen wurde
      42. If INIpfad = "" Then
      43. MsgBox("Es ist kein Pfad zur INI angegeben. Deshalb ist das Schreiben des Wertes nicht möglich." _
      44. & vbCrLf & vbCrLf & "Angeforderte Sektion: " & Sektion & vbCrLf & "Zu schreibender Schlüssel: " _
      45. & Schlüssel, MsgBoxStyle.Exclamation, "Pfad zur INI-Datei fehlt")
      46. Exit Sub
      47. End If
      48. ' Testen, ob der Order, in dem die *.INI liegen soll, existiert
      49. Dim Ordner As String
      50. Ordner = IO.Path.GetDirectoryName(INIpfad)
      51. If IO.Directory.Exists(Ordner) = False Then
      52. MsgBox("Die angegebene Ordner für die INI-Datei exstiert auf diesem Rechner nicht. Deshalb ist das " _
      53. & "Schreiben des Wertes nicht möglich." & vbCrLf & vbCrLf & "Fehlender Ordner: " & Ordner _
      54. & vbCrLf & "Angeforderte Sektion: " & Sektion & vbCrLf & "Zu schreibender Schlüssel: " _
      55. & Schlüssel, MsgBoxStyle.Exclamation, "Pfad zur INI-Datei existiet nicht")
      56. Exit Sub
      57. End If
      58. ' Schreiben in die *.INI durchführen
      59. WritePrivateProfileString(Sektion, Schlüssel, Wert, INIpfad)
      60. End Sub
      61. Public Sub SchlüsselLöschen(ByVal Sektion As String, ByVal Schlüssel As String)
      62. ' Testen, ob ein Pfad zur INI in die Variable INIpfad eingetragen wurde
      63. If INIpfad = "" Then
      64. MsgBox("Es ist kein Pfad zur INI angegeben. Deshalb ist das Löschen des Schlüssels nicht möglich." _
      65. & vbCrLf & vbCrLf & "Angeforderte Sektion: " & Sektion & vbCrLf & "Zu löschender Schlüssel: " _
      66. & Schlüssel, MsgBoxStyle.Exclamation, "Pfad zur INI-Datei fehlt")
      67. Exit Sub
      68. End If
      69. ' Testen, ob die der Order, in dem die *.INI liegen soll, existiert
      70. Dim Ordner As String
      71. Ordner = IO.Path.GetDirectoryName(INIpfad)
      72. If IO.Directory.Exists(Ordner) = False Then
      73. MsgBox("Die angegebene Ordner für die INI-Datei exstiert auf diesem Rechner nicht. Deshalb ist das " _
      74. & "Löschen des Wertes nicht möglich." & vbCrLf & vbCrLf & "Fehlender Ordner: " & Ordner _
      75. & vbCrLf & "Angeforderte Sektion: " & Sektion & vbCrLf & "Zu löschender Schlüssel: " _
      76. & Schlüssel, MsgBoxStyle.Exclamation, "Pfad zur INI-Datei existiert nicht")
      77. Exit Sub
      78. End If
      79. ' Löschen des Schlüssels durch eine Schreiboperation durchführen
      80. WritePrivateProfileString(Sektion, Schlüssel, Nothing, INIpfad)
      81. End Sub
      82. Public Sub SektionLöschen(ByVal Sektion As String)
      83. ' Testen, ob ein Pfad zur INI in die Variable INIpfad eingetragen wurde
      84. If INIpfad = "" Then
      85. MsgBox("Es ist kein Pfad zur INI angegeben. Deshalb ist das Löschen der Sektion nicht möglich." _
      86. & vbCrLf & vbCrLf & "Angeforderte Sektion: " & Sektion, MsgBoxStyle.Exclamation, _
      87. "Pfad zur INI-Datei fehlt")
      88. Exit Sub
      89. End If
      90. ' Testen, ob die *.INI Datei existiert
      91. If IO.File.Exists(INIpfad) = False Then
      92. MsgBox("Die angegebene INI-Datei exstiert auf diesem Rechner nicht. Deshalb ist das " _
      93. & "Löschen der Sektion nicht möglich." & vbCrLf & vbCrLf & "INI-Datei: " & INIpfad _
      94. & vbCrLf & "Angeforderte Sektion: ", MsgBoxStyle.Exclamation, "Pfad zur INI-Datei fehlt")
      95. Exit Sub
      96. End If
      97. 'Löschen der Sektion
      98. DeletePrivateProfileSection(Sektion, 0, 0, INIpfad)
      99. End Sub
      100. Public Sub BackupAnlegen(ByVal Zielpfad As String, Optional ByVal FehlermeldungAnzeigen As Boolean = False)
      101. ' Testen, ob ein Pfad zur *.INI vorhanden ist
      102. If INIpfad = "" Then
      103. If FehlermeldungAnzeigen = True Then
      104. MsgBox("Es ist kein Pfad zur INI, von der ein Backup angelegt werden soll, angegeben." _
      105. & "Das Backup konnte NICHT angelegt werden.", MsgBoxStyle.Exclamation, "Pfad zur INI-Datei fehlt")
      106. End If
      107. Exit Sub
      108. End If
      109. ' Testen, ob der Ordner des Zielpfades existiert
      110. Dim Ordner As String
      111. Ordner = IO.Path.GetDirectoryName(INIpfad)
      112. If IO.Directory.Exists(Ordner) = False Then
      113. If FehlermeldungAnzeigen = True Then
      114. MsgBox(Zielpfad & vbCrLf & vbCrLf & "Dieser Ordner existiert nicht." _
      115. & vbCrLf & vbCrLf & "Das Backup konnte NICHT angelegt werden.", MsgBoxStyle.Exclamation, _
      116. "Zielordner existiert nicht")
      117. End If
      118. Exit Sub
      119. End If
      120. ' Kopie der *.INI erstellen
      121. IO.File.Copy(INIpfad, Zielpfad)
      122. End Sub
      123. Private Sub DateiLöschen(Optional ByVal FehlermeldungAnzeigen As Boolean = False)
      124. ' Testen, ob ein Pfad zur *.INI vorhanden ist
      125. If INIpfad = "" Then
      126. If FehlermeldungAnzeigen = True Then
      127. MsgBox("Es ist kein Pfad zur INI, die gelöscht werden soll, angegeben." _
      128. & "Das Löschen konnte NICHT durchgeführt werden.", MsgBoxStyle.Exclamation, "Pfad zur INI-Datei fehlt")
      129. End If
      130. Exit Sub
      131. End If
      132. ' Testen, ob die *.INI Datei existiert
      133. If IO.File.Exists(INIpfad) = False Then
      134. If FehlermeldungAnzeigen = True Then
      135. MsgBox(INIpfad & vbCrLf & vbCrLf & "Diese Datei existiert bereits nicht mehr. " _
      136. & "Das Löschen hat sich damit erübrigt.", MsgBoxStyle.Exclamation, _
      137. "Datei existiert nicht mehr")
      138. End If
      139. Exit Sub
      140. End If
      141. ' Löschen durchführen
      142. IO.File.Delete(INIpfad)
      143. End Sub
      144. End Class
      Alles anzeigen


      lg H4ckHunt3r