Taskmanager per Listview Suspend, Resume

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Zysor.

    Hallo Zysor,

    meinst du Suspend, Resume aus VB6 ?

    Wenn ja - dann muss ich dich enttäuschen.

    Obwohl 'Resume' und 'On Error Resume Next' noch vorhanden sind,
    sollten diese Befehle nicht mehr verwendet werden.
    (Sie sind veraltet)


    Gruss

    mikeb69
    Ich habe mal einen Code dafür gefunden, kannst ja mal ausprobieren (du brauchst glaube ich gar nicht alles was in dem Code ist, musst mal schauen was du daraus löschen kannst):

    VB.NET-Quellcode

    1. Public Enum ThreadAccess As Integer
    2. SUSPEND_RESUME = &H2
    3. End Enum
    4. <DllImport("Kernel32.dll")> _
    5. Private Shared Function SuspendThread(ByVal hThread As IntPtr) As Int32
    6. End Function
    7. Public Function Thread_Suspend(ByVal ThreadHandle As IntPtr) As Integer
    8. Return SuspendThread(ThreadHandle)
    9. End Function
    10. <DllImport("kernel32.dll")> _
    11. Private Shared Function ResumeThread(ByVal hThread As IntPtr) As Integer
    12. End Function
    13. Public Function Thread_Resume(ByVal ThreadHandle As IntPtr) As Integer
    14. Return ResumeThread(ThreadHandle)
    15. End Function
    16. <DllImport("kernel32.dll")> _
    17. Private Shared Function OpenThread(ByVal dwDesiredAccess As ThreadAccess, ByVal bInheritHandle As Boolean, ByVal dwThreadId As Integer) As IntPtr
    18. End Function
    19. Public Function Thread_GetHandle(ByVal ThreadID As Integer) As IntPtr
    20. Return OpenThread(ThreadAccess.SUSPEND_RESUME, False, ThreadID)
    21. End Function
    22. Public Function Thread_GetHandle(ByVal ThreadID As Integer, ByVal DesiredAccess As ThreadAccess) As IntPtr
    23. Return OpenThread(DesiredAccess, False, ThreadID)
    24. End Function
    25. <DllImport("kernel32.dll", SetLastError:=True)> _
    26. Private Shared Function CloseHandle(ByVal hHandle As IntPtr) As Boolean
    27. End Function
    28. Public Function Handle_Close(ByVal OpenedHandle As IntPtr) As Boolean
    29. Return CloseHandle(OpenedHandle)
    30. End Function
    31. 'Freeze
    32. For Each thread As ProcessThread In Process.GetProcessesByName("firefox")(0).Threads
    33. Thread_Suspend(Thread_GetHandle(thread.Id))
    34. Next
    35. 'Unfreeze
    36. For Each thread As ProcessThread In Process.GetProcessesByName("firefox")(0).Threads
    37. Thread_Resume(Thread_GetHandle(thread.Id))
    38. Next

    Quellcode

    1. 'Freeze
    2. For Each thread As ProcessThread In Process.GetProcessesByName("firefox")(0).Threads
    3. Thread_Suspend(Thread_GetHandle(thread.Id))
    4. Next
    5. 'Unfreeze
    6. For Each thread As ProcessThread In Process.GetProcessesByName("firefox")(0).Threads
    7. Thread_Resume(Thread_GetHandle(thread.Id))
    8. Next


    kenn ich schon und funktioniert auch, aber nur wenn man den Prozessnamen als String angibt :P

    ich brüchte jetzt aber das er suspendet, was ich ausgewählt habe im Listview, weil ich dort ja alle prozesse aufgelistet habe^^