none
Me ajudem por favor RRS feed

Respostas

Todas as Respostas

  • Poderia descrever melhor sua questao?

    Voce esta tentando fazer isso em VB? 

    Quando vc tentar suspender as theads, o que vc obtem como mensagem?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    segunda-feira, 29 de outubro de 2012 14:16
    Moderador
  • eu uso esse codigo aqui, porém não sei onde atribuiro valor

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Linq
    Imports System.Text
    Imports System.Windows.Forms
    Imports System.Diagnostics
    Imports System.Runtime.InteropServices
    
    Public Class Form1
    
        <DllImport("Kernel32.dll")> _
        Private Shared Function SuspendThread(ByVal hThread As IntPtr) As Int32
        End Function
        Public Function Thread_Suspend(ByVal ThreadHandle As IntPtr) As Integer
            Return SuspendThread(ThreadHandle)
        End Function
        <DllImport("kernel32.dll")> _
        Private Shared Function ResumeThread(ByVal hThread As IntPtr) As Integer
        End Function
        Public Function Thread_Resume(ByVal ThreadHandle As IntPtr) As Integer
            Return ResumeThread(ThreadHandle)
        End Function
        <DllImport("kernel32.dll")> _
        Private Shared Function OpenThread(ByVal dwDesiredAccess As ThreadAccess, ByVal bInheritHandle As Boolean, ByVal dwThreadId As Integer) As IntPtr
        End Function
        Public Function Thread_GetHandle(ByVal ThreadID As Integer) As IntPtr
            Return OpenThread(ThreadAccess.SUSPEND_RESUME, False, ThreadID)
        End Function
        Public Function Thread_GetHandle(ByVal ThreadID As Integer, ByVal DesiredAccess As ThreadAccess) As IntPtr
            Return OpenThread(DesiredAccess, False, ThreadID)
        End Function
        <DllImport("kernel32.dll", SetLastError:=True)> _
        Private Shared Function CloseHandle(ByVal hHandle As IntPtr) As Boolean
        End Function
        Public Function Handle_Close(ByVal OpenedHandle As IntPtr) As Boolean
            Return CloseHandle(OpenedHandle)
        End Function
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            For Each thread As ProcessThread In Process.GetProcessesByName("notepad")(0).Threads
                Thread_Suspend(Thread_GetHandle(thread.Id))
            Next
        End Sub
    
        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            For Each thread As ProcessThread In Process.GetProcessesByName("notepad")(0).Threads
                Thread_Resume(Thread_GetHandle(thread.StartAddress))
            Next
        End Sub
    End Class
    
    <Flags()> _
    Public Enum ThreadAccess As Integer
        TERMINATE = (&H1)
        SUSPEND_RESUME = (&H2)
        GET_CONTEXT = (&H8)
        SET_CONTEXT = (&H10)
        SET_INFORMATION = (&H20)
        QUERY_INFORMATION = (&H40)
        SET_THREAD_TOKEN = (&H80)
        IMPERSONATE = (&H100)
        DIRECT_IMPERSONATION = (&H200)
    End Enum

    Por favor ajude

    segunda-feira, 29 de outubro de 2012 16:47
  • O exemplo que vc postou procura todas as instancias de Notepad e as fecha.

    Para outros processos basta alterar o filtro nesta funçao:

    Process.GetProcessesByName("notepad")(0).Threads

    por

    Process.GetProcessesByName("app")(0).Threads

    Desculpe, mas eu nao consigo ler o que esta escrito na imagem que vc anexou.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    segunda-feira, 29 de outubro de 2012 19:00
    Moderador
  • Obrigado por responder willian, mas o problema é o seguinte:

    Eu consigo suspender As threads destacadas na imagem, mas só pelo ID da thread, e o ID muda a cada Vez que o processo é iniciado. então eu queria suspender pelo start adress da thread porque ele não Muda...

    É Possível isso com o codigo que eu mostrei? 

     
    segunda-feira, 29 de outubro de 2012 19:28
  • Com o codigo que vc mostrou nao, porque o parametro da api é realmente o  pID da serviço... e este sempre muda. 

    Mas seu projeto mostra como localizar um processo pelo nome dele (ex. : notepad)

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    segunda-feira, 29 de outubro de 2012 19:35
    Moderador
  • Obrigado!

    Mas existe alguma API simplificada para executar esta ação ?

    segunda-feira, 29 de outubro de 2012 20:19
  • Que eu saiba nao.

    Qual é o motivo para ter que fechar uma thread por software... Poderia nos dar mais detalhes?

    Talvez vc esteja tentando resolver um problema criando um outro.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    terça-feira, 30 de outubro de 2012 12:50
    Moderador
  • Bom, gosto de trabalhar com processos, threads, módulos e etc...

    Então queria me aprofundar um pouco em relação a isso, e queria trabalhar suspendendo threads. Então queria suspender as threads destacadas na imagem, mas já tentei todas as maneiras e não tive sucesso!

    Mas é possivel suspender atravez do controle Process que fica na toolbox ?

    terça-feira, 30 de outubro de 2012 14:24
  • Nao sei.... Eu nao consigo ler os dados na imagem que vc colocou.

    Eu uso o ProcessExplorer: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

    ele dá muito mais possibilidades para analisar e gerenciar as threads.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    terça-feira, 30 de outubro de 2012 15:17
    Moderador
  • Não sabia que existia esse programa!

    Obrigado mais uma vez!

    terça-feira, 30 de outubro de 2012 18:15