none
Executar arquivo em modo oculto RRS feed

  • Pergunta

  • Olá

    Estou tentando executar um programa em modo oculto, ou seja em segundo plano, mas não funciona;

    Tentei o método:

      Process.Start("C:\File1.exe", vbHide)
    sexta-feira, 25 de setembro de 2015 01:21

Respostas

  • Pelo que eu saiba esse recurso ficou obsoleto a partir do Windows 7, no Windows XP ainda existia uma chamada de API que escondia do task manager, porem voce pode desabilitar as bordas, a propriedade ShowInTaskBar para false,opacity coloque valor 0, me.Text = nothing POREM ficaria invisível somente na visualização simples, se o usuario for na aba processos, ele consegue enxergar o .exe sendo executado.  Mas qual seu intuito?

    Lembre-se que esses tipos de comportamento, quem tem são programas maliciosos e podem ser enquadrados como crime virtual.

    Microsoft Technology Associate (MTA)


    • Editado Eduardo xUni sábado, 24 de outubro de 2015 17:49
    • Sugerido como Resposta SimorC domingo, 1 de novembro de 2015 22:59
    • Marcado como Resposta Marcos SJ segunda-feira, 2 de novembro de 2015 10:42
    sábado, 24 de outubro de 2015 17:43

Todas as Respostas

  • ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.FileName = "C:\\WINNT\\system32\\cmd.exe";
    startInfo.UseShellExecute = false;
    startInfo.RedirectStandardOutput = true;
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    
    Process proc = Process.Start(startInfo);


    Atenciosamente, Samuel dos Anjos

    • Sugerido como Resposta Samuel Rodrigues dos Anjos sexta-feira, 25 de setembro de 2015 01:32
    • Marcado como Resposta Marcos SJ sexta-feira, 25 de setembro de 2015 10:36
    • Não Marcado como Resposta Marcos SJ sexta-feira, 25 de setembro de 2015 10:36
    • Não Sugerido como Resposta Marcos SJ segunda-feira, 28 de setembro de 2015 17:21
    sexta-feira, 25 de setembro de 2015 01:32
  • Olá Samuel

    Agradeço pela ajuda, mas não funcionou.

    :/


    • Editado Marcos SJ segunda-feira, 28 de setembro de 2015 17:21 Edição
    sexta-feira, 25 de setembro de 2015 01:38
  • Tenta executar assim:

    Dim p as New ProcessStartInfo(@"caminho")
    p.WindowStyle = ProcessWindowStyle.Hidden
    p.CreateNoWindow = true
    Process.Start(p)
    
    


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    sexta-feira, 25 de setembro de 2015 05:10
  • Olá

    Cara, não da certo, abre normalmente.

    Não sei oque fazer, já procurei, testei e nada.

    sexta-feira, 25 de setembro de 2015 14:31
  • Olá Eliseu5,

    Não entendi. Abre normalmente mas não dá certo??

    Você já conseguiu solucionar o problema?

    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.

    sexta-feira, 23 de outubro de 2015 12:43
  • Public Class Form1

    'Coded by João Paulo :) Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim hide As New ProcessStartInfo hide.FileName = ("notepad") hide.WindowStyle = ProcessWindowStyle.Hidden Process.Start(hide) End Sub End Class

    sexta-feira, 23 de outubro de 2015 15:50
  • Olá Eliseu5,

    Não entendi. Abre normalmente mas não dá certo??

    Você já conseguiu solucionar o problema?

    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.

    Boa tarde.

    Acredito que ele quis dizer que abre "sem estar oculto".

    Eliseu5, tanto a solução do Bruno Maestro quanto a do João Paulo_ deram certo aqui.

    Poderias nos informar melhor o que está acontecendo ou deixando de acontecer?

    Se possível, poderias, também, colocar no tópico o resto do seu código?


    Att., Rafael Simor


    • Editado SimorC sexta-feira, 23 de outubro de 2015 16:21 Erro gramatical
    sexta-feira, 23 de outubro de 2015 16:16
  • Aqui amigo 

    Public Class Form1
    
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim hide As New ProcessStartInfo
            hide.FileName = ("notepad")
            hide.WindowStyle = ProcessWindowStyle.Hidden
            Process.Start(hide)
        End Sub
    End Class

    sexta-feira, 23 de outubro de 2015 21:30
  • Boa noite.

    Acredito que seja bastante difícil executar o programa sem que apareça nos processos, provavelmente não tem uma forma fácil.

    O que acontece com o .Hidden mostrado anteriormente é que ele não abre a janela do programa (o programa é executado em segundo plano), que imagino que seja o que todos aqui entenderam que fosse a dúvida.

    Não tenho conhecimento sobre como esconder o programa do monitor de processos.


    Att., Rafael Simor

    sexta-feira, 23 de outubro de 2015 21:48
  • Bom Na verdade Não e permitido revelar esse tipo de codigos pois muitos podem usar para criar virus e keylogger 
    sábado, 24 de outubro de 2015 01:41
  • Uma thread que respondi ontem resolve o seu problema

    AQUI

    Voce vai usar a constante SW_HIDE na pinvoke:

    Voce precisa obter o IntPtr(ponteiro de memoria responsavel pelo titulo da janela).Obviamente que voce precisa chamar o seu exe e em seguidar fazer a chamada dessa API dessa forma
    adapte esse codigo ao seu,par amais informações acesse ESSE LINK .. 

    Segue o codigo +/-

        <System.Runtime.InteropServices.DllImport("user32.dll")> _
        Private Shared Sub ShowWindow(hWnd As IntPtr, nCmdShow As Integer)
        End Sub
    
        Private Const SW_HIDE = 0
    
        Dim strProcesso As String = "calc"
    
        Sub New()
            ' This call is required by the designer.
            InitializeComponent()
            Process.Start(strProcesso)
        End Sub
    
        Private Function GetProcessoHandle(strNome As String) As IntPtr
            Return Process.GetProcesses.First(Function(f) f.ProcessName.Equals(strNome)).MainWindowHandle
        End Function
    
        Private Sub cmdEsconder_Click(sender As Object, e As EventArgs) Handles cmdEsconder.Click
            Dim Handle As IntPtr = 0
            Handle = GetProcessoHandle(strProcesso)
    
            If Handle <> 0 Then
                ShowWindow(Handle, SW_HIDE)
            End If
        End Sub


    Microsoft Technology Associate (MTA)


    sábado, 24 de outubro de 2015 13:34
  • Uma thread que respondi ontem resolve o seu problema


    Voce vai usar a constante SW_HIDE na pinvoke:


    Voce precisa obter o IntPtr(ponteiro de memoria responsavel pelo titulo da janela).Obviamente que voce precisa chamar o seu exe e em seguidar fazer a chamada dessa API dessa forma
    adapte esse codigo ao seu,par amais informações acesse.. 

    Segue o codigo +/-

        <System.Runtime.InteropServices.DllImport("user32.dll")> _
        Private Shared Sub ShowWindow(hWnd As IntPtr, nCmdShow As Integer)
        End Sub
    
        Private Const SW_HIDE = 0
    
        Dim strProcesso As String = "calc"
    
        Sub New()
            ' This call is required by the designer.
            InitializeComponent()
            Process.Start(strProcesso)
        End Sub
    
        Private Function GetProcessoHandle(strNome As String) As IntPtr
            Return Process.GetProcesses.First(Function(f) f.ProcessName.Equals(strNome)).MainWindowHandle
        End Function
    
        Private Sub cmdEsconder_Click(sender As Object, e As EventArgs) Handles cmdEsconder.Click
            Dim Handle As IntPtr = 0
            Handle = GetProcessoHandle(strProcesso)
    
            If Handle <> 0 Then
                ShowWindow(Handle, SW_HIDE)
            End If
        End Sub


    Microsoft Technology Associate (MTA)


    Este código esconde completamente o processo da lista de processos?
    sábado, 24 de outubro de 2015 15:47
  • Pelo que eu saiba esse recurso ficou obsoleto a partir do Windows 7, no Windows XP ainda existia uma chamada de API que escondia do task manager, porem voce pode desabilitar as bordas, a propriedade ShowInTaskBar para false,opacity coloque valor 0, me.Text = nothing POREM ficaria invisível somente na visualização simples, se o usuario for na aba processos, ele consegue enxergar o .exe sendo executado.  Mas qual seu intuito?

    Lembre-se que esses tipos de comportamento, quem tem são programas maliciosos e podem ser enquadrados como crime virtual.

    Microsoft Technology Associate (MTA)


    • Editado Eduardo xUni sábado, 24 de outubro de 2015 17:49
    • Sugerido como Resposta SimorC domingo, 1 de novembro de 2015 22:59
    • Marcado como Resposta Marcos SJ segunda-feira, 2 de novembro de 2015 10:42
    sábado, 24 de outubro de 2015 17:43
  • Bom dia,

    A pergunta inicial já foi respondida?

    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.

    segunda-feira, 26 de outubro de 2015 11:56
  • Boa Tarde

    Agradeço pela ajuda. Meu objetivo é criar um Joiner, se pude-se ocultar totalmente melhor, agora se for normalmente pode ser.

    sábado, 31 de outubro de 2015 19:16
  • Boa Tarde

    Vou testar os métodos, depois comento e marco a resposta.

    Já agradeço pela ajuda.

    sábado, 31 de outubro de 2015 19:19