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?
Executar Aplicativo Externo
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