Der Prozess kann nicht auf die Datei "Datei.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Samus Aran.

    Der Prozess kann nicht auf die Datei "Datei.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.

    Mache einen Keybinder und habe schon mithilfe des Forums eines meiner Größten probleme behoben doch jetzt greift SAMP(San Andreas Multiplayer) und mein Programm auf
    C:\Users\Marvin\Documents\GTA San
    Andreas User Files\SAMP\chatlog.txt
    Das Problem bei der Sache ist das ich bei diesem Code Abschnitt

    VB.NET-Quellcode

    1. Dim sr As New IO.StreamReader("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    2. Dim auftrag As String = sr.ReadToEnd
    3. sr.Close()

    Diese Fehlermeldung bekomme
    Der Prozess kann nicht auf die Datei "C:\Users\Marvin\Documents\GTA San
    Andreas User Files\SAMP\chatlog.txt" zugreifen, da sie von einem anderen
    Prozess verwendet wird.
    Wie kann ich es Lösen das beide darauf zugreifen können? ?(

    Edit by hal2000:
    - sinnlose Tags wie "die, nicht, der, von, wird" entfernt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Wie wäre es mit

    VB.NET-Quellcode

    1. Dim auftrag As String
    2. Using sr As New IO.StreamReader("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    3. auftrag = sr.ReadToEnd
    4. End Using
    oder besser

    VB.NET-Quellcode

    1. Dim auftrag As String
    2. auftrag = System.IO.File.ReadAllText("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    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!

    hal2000 schrieb:

    Dafür gibts die Volumeschattenkopie.
    Ich denke, das solch Klopper nicht erforderlich ist, denn mit dem Notepad kannst Du eine Datei auch mehrfach öffnen. Dafür gibt es die Open-Flags.
    Es kommt letztenendes darauf an, was sonst noch so mit dieser Datei veranstaltet wird.
    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!
    Dann probier mal IO.FileStream

    VB.NET-Quellcode

    1. Dim sr As New IO.FileStream("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
    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!
    So oder wie

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim auftrag As String
    3. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short
    4. Public Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    5. End Sub
    6. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles auftraege_annehem.Tick
    7. 'Dim auftrag() As String = System.IO.File.ReadAllLines("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    8. Dim sr As New IO.FileStream("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
    9. sr.Close()
    10. If auftrag(auftrag.Length - 3) = "gib /accept corpse ein, um den Auftrag anzunehmen!" Then
    11. My.Computer.Keyboard.SendKeys("t")
    12. My.Computer.Keyboard.SendKeys("/accept corpse")
    13. My.Computer.Keyboard.SendKeys("{ENTER}")
    14. My.Computer.Audio.Play(My.Resources.schliefe, AudioPlayMode.Background)
    15. End If
    16. End Sub
    17. End Class

    Dann kommt immer
    NullReferenceException Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Und wenn ichs so Probiere

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short
    3. Public Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. End Sub
    5. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles auftraege_annehem.Tick
    6. 'Dim auftrag() As String = System.IO.File.ReadAllLines("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    7. Dim sr As New IO.FileStream("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
    8. Dim auftrag As String
    9. sr.Close()
    10. If auftrag(auftrag.Length - 3) = "gib /accept corpse ein, um den Auftrag anzunehmen!" Then
    11. My.Computer.Keyboard.SendKeys("t")
    12. My.Computer.Keyboard.SendKeys("/accept corpse")
    13. My.Computer.Keyboard.SendKeys("{ENTER}")
    14. My.Computer.Audio.Play(My.Resources.schliefe, AudioPlayMode.Background)
    15. End If

    Dann ist
    Warnung 1 Die auftrag-Variable wird verwendet, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten. C:\Users\Marvin\documents\visual studio 2010\Projects\GRPBestatterKeybinder\GRPBestatterKeybinder\Form1.vb 13 12 GRPBestatterKeybinder

    Mach ichs einfach nur komplett blöd?
    Analog diesem hier:

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. Dim auftrag As String
    2. Using sr As New IO.StreamReader("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    3. auftrag = sr.ReadToEnd
    4. End Using
    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!
    Dan passsiert immer das
    Fehler 1 Die Datei "obj\x86\Debug\GRPBestatterKeybinder.exe" kann nicht in "bin\Debug\GRPBestatterKeybinder.exe" kopiert werden. Der Prozess kann nicht auf die Datei "bin\Debug\GRPBestatterKeybinder.exe" zugreifen, da sie von einem anderen Prozess verwendet wird. GRPBestatterKeybinder

    eigentlich nicht das kam einfach so aus heiterem Himmel hier is ma mein komplettes Script:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short
    3. Public Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. End Sub
    5. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles auftraege_annehem.Tick
    6. 'Dim auftrag() As String = System.IO.File.ReadAllLines("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    7. Dim auftrag As String
    8. Using sr As New IO.StreamReader("C:\Users\Marvin\Documents\GTA San Andreas User Files\SAMP\chatlog.txt")
    9. auftrag = sr.ReadToEnd
    10. End Using
    11. If auftrag(auftrag.Length - 3) = "gib /accept corpse ein, um den Auftrag anzunehmen!" Then
    12. My.Computer.Keyboard.SendKeys("t")
    13. My.Computer.Keyboard.SendKeys("/accept corpse")
    14. My.Computer.Keyboard.SendKeys("{ENTER}")
    15. My.Computer.Audio.Play(My.Resources.schliefe, AudioPlayMode.Background)
    16. End If
    17. End Sub
    18. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    19. My.Computer.Audio.Play(My.Resources.schliefe, AudioPlayMode.Background)
    20. End Sub
    21. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    22. My.Computer.Audio.Stop()
    23. End Sub
    24. Private Sub keybindes_Tick(sender As System.Object, e As System.EventArgs) Handles keybindes.Tick
    25. If GetAsyncKeyState(Keys.NumPad1) Then
    26. keybindes.Start()
    27. My.Computer.Keyboard.SendKeys("t")
    28. My.Computer.Keyboard.SendKeys("/reservecar")
    29. My.Computer.Keyboard.SendKeys("{ENTER}")
    30. End If
    31. If GetAsyncKeyState(Keys.NumPad2) Then
    32. keybindes.Start()
    33. My.Computer.Keyboard.SendKeys("t")
    34. My.Computer.Keyboard.SendKeys("/zoll")
    35. My.Computer.Keyboard.SendKeys("{ENTER}")
    36. End If
    37. If GetAsyncKeyState(Keys.NumPad3) Then
    38. keybindes.Start()
    39. My.Computer.Keyboard.SendKeys("t")
    40. My.Computer.Keyboard.SendKeys("/vehradio")
    41. My.Computer.Keyboard.SendKeys("{ENTER}")
    42. End If
    43. If GetAsyncKeyState(Keys.NumPad4) Then
    44. keybindes.Start()
    45. My.Computer.Keyboard.SendKeys("t")
    46. My.Computer.Keyboard.SendKeys("/lock")
    47. My.Computer.Keyboard.SendKeys("{ENTER}")
    48. End If
    49. If GetAsyncKeyState(Keys.NumPad5) Then
    50. keybindes.Start()
    51. My.Computer.Keyboard.SendKeys("t")
    52. My.Computer.Keyboard.SendKeys("/engine")
    53. My.Computer.Keyboard.SendKeys("{ENTER}")
    54. End If
    55. If GetAsyncKeyState(Keys.NumPad3) Then
    56. keybindes.Start()
    57. My.Computer.Keyboard.SendKeys("t")
    58. My.Computer.Keyboard.SendKeys("/lights")
    59. My.Computer.Keyboard.SendKeys("{ENTER}")
    60. End If
    61. If GetAsyncKeyState(Keys.NumPad7) Then
    62. keybindes.Start()
    63. My.Computer.Keyboard.SendKeys("t")
    64. My.Computer.Keyboard.SendKeys("/exit")
    65. My.Computer.Keyboard.SendKeys("{ENTER}")
    66. End If
    67. If GetAsyncKeyState(Keys.NumPad8) Then
    68. My.Computer.Keyboard.SendKeys("t")
    69. My.Computer.Keyboard.SendKeys("/takecorps ")
    70. End If
    71. If GetAsyncKeyState(Keys.NumPad9) Then
    72. keybindes.Start()
    73. My.Computer.Keyboard.SendKeys("t" & "/carlock" & "{Enter}")
    74. End If
    75. End Sub
    76. End Class
    Mal kurz überflogen:
    Wozu brauchst Du 2 Timer?
    Ersetze einen durch einen FileSystemWatcher und lass Dir ein Event schicken, wenn die Datei geändert wird,
    Ersetze den anderen durch das Key_Down-Event.
    An welcher Stelle knallt er eigentlich?
    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!
    1. Einfach so

    2. Kp wie en FyleSystemwatcher geht.

    3. Jetzt is hal das
    Fehler 1 Die Datei "obj\x86\Debug\GRPBestatterKeybinder.exe" kann nicht
    in "bin\Debug\GRPBestatterKeybinder.exe" kopiert werden. Der Prozess
    kann nicht auf die Datei "bin\Debug\GRPBestatterKeybinder.exe"
    zugreifen, da sie von einem anderen Prozess verwendet wird.
    GRPBestatterKeybinder
    (Hab einfach en neuse Project gemacht und jetzt gehts)
    im code selber kommt kein Fehler. Und vorher war es so das es hies auf die chatlog.txt greift ein anderer Prozess zu deswegen kann ich nicht darauf zugreifen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „keydrow“ ()