Executar Aplicativo Externo

Utilizo dois monitores no computador onde roda a aplicação. Num deles roda a aplicação do elipse E3. Nessa aplicação abro um programa externo, porem esse programa abre sobre a aplicação E3. Existe a possibilidade dessa programa abrir na outra tela?

Esta é uma tarefa que pode ser complicada, usando VBScript apenas não é possível, será preciso acessar a API do Windows, mas ainda assim, pode não ser tão simples encontrar a janela principal do programa a ser executado.

Segue um exemplo de um caminho por onde começar (em c# utilizando P/Invoke).

[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(
        IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

static void Main(string[] args)
{
    Process process = new Process();
    process.StartInfo.FileName = args[0];
    process.Start();
    process.WaitForInputIdle();

    while (process.MainWindowHandle == IntPtr.Zero)
    {
        Thread.Sleep(1000);
        process.Refresh();
    }

    int x = int.Parse(args[1]);
    int y = int.Parse(args[2]);
    int nWidth = int.Parse(args[3]);
    int nHeight = int.Parse(args[4]);

    MoveWindow(process.MainWindowHandle, x, y, nWidth, nHeight, false);
} 

No elipse:

Dim oShell
Set oShell = CreateObject("WScript.Shell")
' # abre mspaint na posicao 0x0 com tamanho 600x480 px.
oShell.Run ".\openexec.exe mspaint.exe 0 0 600 480" , 0, True
2 Likes