Execute um aplicativo do Windows sem exibir sua GUI

2

Existe uma maneira de executar um aplicativo do Windows sem exibir sua janela da GUI?

Eu tenho um aplicativo do Windows de terceiros que não tem qualquer parâmetro de linha de comando ou alternar para suprimir sua GUI. Eu preciso iniciá-lo em segundo plano e interagir apenas programaticamente com ele, usando APIs de troca de dados publicadas por esse aplicativo de terceiros.

Eu tentei criar uma Tarefa no Agendador de Tarefas com a caixa de seleção Oculto, mas mesmo assim, quando inicio a tarefa manualmente, a janela do aplicativo é exibida. Eu acho que o aplicativo está programado para se concentrar depois da inicialização.

Eu preciso dessa solução para o Windows 7.

Obrigado.

    
por AllSolutions 20.05.2016 / 21:33

2 respostas

3

Talvez você possa usar a API do Win32 via PowerShell para encontrar e ocultar a (s) janela (s) do aplicativo de destino.

Exemplo de código:

$definition = @"    
      [DllImport("user32.dll")]
      static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

      [DllImport("user32.dll")]
      [return: MarshalAs(UnmanagedType.Bool)]
      static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

      public static void Show(string wClass, string wName)
      {
         IntPtr hwnd = FindWindow(wClass, wName);
         if ((int)hwnd > 0)
            ShowWindow(hwnd, 1);
      }

      public static void Hide(string wClass, string wName)
      {
         IntPtr hwnd = FindWindow(wClass, wName);
         if ((int)hwnd > 0)
            ShowWindow(hwnd, 0);
      }
"@

add-type -MemberDefinition $definition -Namespace my -Name WinApi

[my.WinApi]::Hide('Notepad', 'Untitled - Notepad')

Código-fonte de A resposta de Aryadev para "Ocultar uma janela com PowerShell ISE?" no StackOverflow.

    
por 21.05.2016 / 03:29
0

Tente executar seu aplicativo via VBScript, o exemplo usa o wmplayer.exe (salve a linha abaixo como arquivo .vbs):

CreateObject("WScript.Shell").Run """C:\Program Files (x86)\Windows Media Player\wmplayer.exe""", 0 
    
por 24.05.2016 / 21:59