der verweis auf einen nicht freigegebenen member erfordert einen objektverweis

  • VB.NET

Es gibt 37 Antworten in diesem Thema. Der letzte Beitrag () ist von P3KK3Y.

    Probier mal dies:

    VB.NET-Quellcode

    1. Dim pr As New Process()
    2. pr.StartInfo.FileName = TextBox1.Text
    3. pr.Kill()
    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!
    Eher müsste er den Prozess finden.
    Das würde so gehen:

    VB.NET-Quellcode

    1. Process.GetProcessesByName(TextBox1.Text)(0).Kill()


    So würde der erste Prozess mit dem Namen aus der TextBox gekillt werden. Wenn du aber zwei davon laufen hast - wird nur der erste gekillt.
    Mhhh es passiert garnichts also ich schicke mal alles:



    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Stunde As Integer = NumericUpDown1.Value Dim Minute As Integer = NumericUpDown2.Value Dim Sekunde As Integer = NumericUpDown3.Value 'Dim pr As New Process() If My.Computer.Clock.LocalTime.Hour = Stunde & My.Computer.Clock.LocalTime.Minute = Minute & My.Computer.Clock.LocalTime.Second = Sekunde Then
    2. 'pr.StartInfo.FileName = TextBox1.Text 'pr.Kill() Process.GetProcessesByName(TextBox1.Text)(0).Kill() MsgBox("Prozess geschlossen", 64, "Erfolgreich!") If RadioButton1.Checked Then Shell("shutdown -s -f") End If If RadioButton2.Checked Then Shell("shutdown -r -f") End If If RadioButton4.Checked Then Shell("shutdown -l -f") End If End If End Sub
    Füge da mal bitte ein paar Zeilenumbrüche ein.
    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!

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim Stunde As Integer = NumericUpDown1.Value
    3. Dim Minute As Integer = NumericUpDown2.Value
    4. Dim Sekunde As Integer = NumericUpDown3.Value
    5. 'Dim pr As New Process()
    6. If My.Computer.Clock.LocalTime.Hour = Stunde & My.Computer.Clock.LocalTime.Minute = Minute & My.Computer.Clock.LocalTime.Second = Sekunde Then
    7. 'pr.StartInfo.FileName = TextBox1.Text
    8. 'pr.Kill()
    9. Process.GetProcessesByName(TextBox1.Text)(0).Kill()
    10. MsgBox("Prozess geschlossen", 64, "Erfolgreich!")
    11. If RadioButton1.Checked Then
    12. Shell("shutdown -s -f")
    13. End If
    14. If RadioButton2.Checked Then
    15. Shell("shutdown -r -f")
    16. End If
    17. If RadioButton4.Checked Then
    18. Shell("shutdown -l -f")
    19. End If
    20. End If
    21. End Sub

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

    P3KK3Y schrieb:

    If My.Computer.Clock.LocalTime.Hour = Stunde & My.Computer.Clock.LocalTime.Minute = Minute & My.Computer.Clock.LocalTime.Second = Sekunde Then

    Ich denke, da kommt er nicht vorbei.
    Erstell Dir aus den Werten eine DateTime-Struktur (Yahr, Monat, Tag, Stunde, Minute und Sekunde) einen Zielwert
    und teste, ob die aktuelle Zeit größer ist:

    VB.NET-Quellcode

    1. Dim jetzt = DateTime.Now
    2. If jetzt >= Zielwert Then
    3. ' Kill
    4. End If
    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!
    Danke! Puhh endlich kann der Code richtig angezeigt werden..
    Ähm Shell nutze ich, weil es für mich die einzigste möglichkeit ist den PC nach dem Vorgang zu beenden
    Ich hab auch davon gehört das es eine Shutdown.exe gibt aber mit Shell ist das doch wesentlich einfach


    @Red

    Aber dann wird doch nicht geprüft ob es die Zeit ist, wie es vom Benutzer eingestellt worden ist...

    /edit, Wie soll ich denn den Zielwert hinschreiben, wieder mein langen Code den du Zitiert hast?

    P3KK3Y schrieb:

    Aber dann wird doch nicht geprüft ob es die Zeit ist, wie es vom Benutzer eingestellt worden ist...

    VB.NET-Quellcode

    1. Dim Zielwert As DateTime = New DateTime(Jahr, Monat, Tag, Deine_Stunde, Deine_Minute, Deine_Sekunde)
    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!

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim Stunde As Integer = NumericUpDown1.Value
    3. Dim Minute As Integer = NumericUpDown2.Value
    4. Dim Sekunde As Integer = NumericUpDown3.Value
    5. Dim Jahr As Integer = My.Computer.Clock.LocalTime.Year
    6. Dim Monat As Integer = My.Computer.Clock.LocalTime.Month
    7. Dim Tag As Integer = My.Computer.Clock.LocalTime.Day
    8. 'Dim pr As New Process()
    9. Dim jetzt = DateTime.Now
    10. Dim Zielwert As DateTime = New DateTime(Jahr, Monat, Tag, Stunde, Minute, Sekunde)
    11. If jetzt >= Zielwert Then
    12. 'pr.StartInfo.FileName = TextBox1.Text
    13. 'pr.Kill()
    14. Process.GetProcessesByName(TextBox1.Text)(0).Kill()
    15. MsgBox("Prozess geschlossen", 64, "Erfolgreich!")
    16. If RadioButton1.Checked Then
    17. Shell("shutdown -s -f")
    18. End If
    19. If RadioButton2.Checked Then
    20. Shell("shutdown -r -f")
    21. End If
    22. If RadioButton4.Checked Then
    23. Shell("shutdown -l -f")
    24. End If
    25. End If
    26. End Sub



    Das steht momentan alles dar, blos es passiert garnichts, wenn ich das Programm Teste

    P3KK3Y schrieb:

    Ich hab auch davon gehört das es eine Shutdown.exe gibt aber mit Shell ist das doch wesentlich einfach
    Shell hat (fast) die gleiche Funktion wie Process.Start(bla) und ruft die schutdown.exe mit Argumenten auf.

    BackToTopic: Versuch mal deine Ursprüngliche Variante mit Stunden, Minuten, Sekunden mit Numericupdowns zu vergleichen aber statt "&" "and" zu verwenden.
    Habs grad so ausprobiert:
    Funzt nicht

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If Now.Hour = NumericUpDown1.Value & Now.Minute = NumericUpDown2.Value Then
    3. MsgBox("ok")
    4. Else
    5. MsgBox("falsch")
    6. End If
    7. End Sub
    Funzt

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If Now.Hour = NumericUpDown1.Value And Now.Minute = NumericUpDown2.Value Then
    3. MsgBox("ok")
    4. Else
    5. MsgBox("falsch")
    6. End If
    7. End Sub
    Ahhh ich glaube ich hab nen ganz dumen Fehler, also es werden Prozesse in eine ListBox angezeigt:

    VB.NET-Quellcode

    1. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    2. Dim Pc As System.Diagnostics.Process
    3. For Each Pc In System.Diagnostics.Process.GetProcesses()
    4. ListBox1.Items.Add(Pc.ProcessName)
    5. Next
    6. If ListBox1.Items.Contains(Pc.ProcessName) Then
    7. Timer2.Stop()
    8. End If
    9. End Sub


    So und nun habe ich den verdacht da ja nur wenn man auf den Prozess klickt in der Textbox nur der Name steht und nicht .exe steht

    -> daran liegts doch oder?

    VB.NET-Quellcode

    1. Process.GetProcessesByName(TextBox1.Text & ".exe")(0).Kill()
    Das kannst du doch selber ausprobieren oder?