Usuário com melhor resposta
Evitar que processo seja suspenço

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!
Respostas
-
Olá Tiago,
Sugiro que verifique o conteúdo destes dois links abaixo, talvez consiga resolver seu problema se baseando nas informações apresentadas:
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
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:
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
-
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.