Ir para conteúdo
Fórum Script Brasil
  • 0

CreateProcess e TerminateProcess


cnkruger

Pergunta

Bom Dia a todos,

Alguém sabe como pode ser simplificado o código abaixo? É possível fazer a mesma coisa com System.Diagnostics.Process?

Busquei em vários lugares mas só encontro instruções separadas e não consegui juntar tudo, o código abaixo fui tirando de vários sites e de um código em vb6.

Desde já agradeço a atenção de todos.

<StructLayout(LayoutKind.Sequential)> Public Structure PROCESS_INFORMATION
        Public hProcess As IntPtr
        Public hThread As IntPtr
        Public dwProcessID As UInteger
        Public dwThreadID As UInteger
    End Structure 'PROCESS_INFORMATION

    <StructLayout(LayoutKind.Sequential)> Public Structure SECURITY_ATTRIBUTES
        Public nLength As Integer
        Public lpSecurityDescriptor As IntPtr
        Public bInheritHandle As Boolean
    End Structure 'SECURITY_ATTRIBUTES

    <StructLayout(LayoutKind.Sequential)> _
    Public Structure STARTUPINFO
        Public cb As UInteger
        Public lpReserved As String
        Public lpDesktop As String
        Public lpTitle As String
        Public dwX As UInteger
        Public dwY As UInteger
        Public dwXSize As UInteger
        Public dwYSize As UInteger
        Public dwXCountChars As UInteger
        Public dwYCountChars As UInteger
        Public dwFillAttribute As UInteger
        Public dwFlags As UInteger
        Public wShowWindow As Short
        Public cbReserved2 As Short
        Public lpReserved2 As IntPtr
        Public hStdInput As IntPtr
        Public hStdOutput As IntPtr
        Public hStdError As IntPtr
    End Structure 'STARTINFO

    <DllImport("kernel32.dll")> _
    Function CreateProcess( _
        ByVal lpApplicationName As String, _
        ByVal lpCommandLine As String, _
        ByVal lpProcessAttributes As IntPtr, _
        ByVal lpThreadAttributes As IntPtr, _
        ByVal bInheritHandles As Boolean, _
        ByVal dwCreationFlags As UInteger, _
        ByVal lpEnvironment As IntPtr, _
        ByVal lpCurrentDirectory As String, _
        ByRef lpStartupInfo As STARTUPINFO, _
        ByRef lpProcessInformation As PROCESS_INFORMATION) As Boolean
    End Function

    <DllImport("kernel32.dll")> _
    Function WaitForSingleObject( _
        ByVal hHandle As Long, _
        ByVal dwMilliseconds As Long) As Long
    End Function

    <DllImport("kernel32.dll")> _
    Function CloseHandle( _
        ByVal hObject As Long) As Long
    End Function

    <DllImport("kernel32.dll")> _
    Function TerminateProcess( _
        ByVal ApphProcess As Long, _
        ByVal uExitCode As Long) As Long
    End Function

    Private INFINITE As Integer = &HFFFFFFFF
    Private exitCode As Long

    Public Function ExecCmd(ByVal cmdline As String) As Long
        Dim proc As PROCESS_INFORMATION
        Dim start As STARTUPINFO
        Dim ret As Object
        Dim id As Long
        'Inicia a strutura STARTUPINFO
        start.cb = Marshal.SizeOf(start)
        'Inicia a aplicação escolhida para ser executada
        ret = CreateProcess(0&, cmdline, 0&, 0&, 1&, &H20, 0&, 0&, start, proc)
        id = proc.dwProcessID
        'Aguarda a aplicação iniciada terminar
        ret = WaitForSingleObject(proc.hProcess, INFINITE)
        ret = CloseHandle(proc.hProcess)
        Return id
    End Function
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...