none
Evitar que processo seja suspenço RRS feed

  • Pergunta

  • Boa noite, preciso de uma ajuda em um processo do windows, para ser mais exato o processo da minha aplicação.

    Estou desenvolvendo um servidor e preciso evitar que usuarios usem cheats nele, já estou terminando só falta uma coisa, evitar que o processo do meu app seja congelado.... para suspender o processo é usado essa source...

    Public Class Form1
        Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
        Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
        Public Declare Function OpenThread Lib "kernel32.dll" (ByVal dwDesiredAccess As ThreadAccess, ByVal bInheritHandle As Boolean, ByVal dwThreadId As UInteger) As IntPtr
        Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hHandle As IntPtr) As Boolean
    
        Public Enum ThreadAccess As Integer
            TERMINATE = 1
            SUSPEND_RESUME = 2
            GET_CONTEXT = 8
            SET_CONTEXT = 16
            SET_INFORMATION = 32
            QUERY_INFORMATION = 64
            SET_THREAD_TOKEN = 128
            IMPERSONATE = 256
            DIRECT_IMPERSONATION = 512
        End Enum
    
        Private Sub ResumeProcess(ByVal process As System.Diagnostics.Process)
            For Each t As ProcessThread In process.Threads
                Dim th As IntPtr
                th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
                If th <> IntPtr.Zero Then
                    ResumeThread(th)
                    CloseHandle(th)
                End If
            Next
        End Sub
    
        Private Sub SuspendProcess(ByVal process As System.Diagnostics.Process)
            For Each t As ProcessThread In process.Threads
                Dim th As IntPtr
                th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
                If th <> IntPtr.Zero Then
                    SuspendThread(th)
                    CloseHandle(th)
                End If
            Next
        End Sub
    
        Private Sub bntON_Click(sender As Object, e As EventArgs) Handles bntON.Click
            On Error Resume Next
            Dim note As Process() = Process.GetProcessesByName("PointBlank")
            SuspendProcess(note(0))
        End Sub
    
        Private Sub bntOFF_Click(sender As Object, e As EventArgs) Handles bntOFF.Click
            On Error Resume Next
            Dim note As Process() = Process.GetProcessesByName("PointBlank")
            ResumeProcess(note(0))
        End Sub

    Já tentei usar um Do Loop dentro de uma Thread executando o comando 

    On Error Resume Next
            Dim note As Process() = Process.GetProcessesByName("PointBlank")
            ResumeProcess(note(0))
    Assim caso o processo fosse suspenço o laço loop pegaria antes mais não pega... já tentei usar um timer no intevalor de 1ms mais não resultou em nada!

    quinta-feira, 16 de julho de 2015 00:52

Respostas

  • Olá Tiago,

    Sugiro que verifique o conteúdo destes dois links abaixo, talvez consiga resolver seu problema se baseando nas informações apresentadas:

    Link 01

    Link 02

    Espero ter ajudado.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ sexta-feira, 31 de julho de 2015 18:21
    quinta-feira, 16 de julho de 2015 19:35

Todas as Respostas

  • Olá Tiago,

    Sugiro que verifique o conteúdo destes dois links abaixo, talvez consiga resolver seu problema se baseando nas informações apresentadas:

    Link 01

    Link 02

    Espero ter ajudado.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ sexta-feira, 31 de julho de 2015 18:21
    quinta-feira, 16 de julho de 2015 19:35
  • Boa tarde,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ sexta-feira, 31 de julho de 2015 18:20
    • Não Marcado como Resposta Marcos SJ sexta-feira, 31 de julho de 2015 18:21
    sexta-feira, 31 de julho de 2015 18:20