2010-06-13 10 views
10

Quiero abrir desde C# una aplicación (flashplayer independiente) y establecer su posición en (0,0) en la pantalla. ¿Cómo puedo hacer esto? Hasta ahora he logrado abrir reproductor flash:Proceso de apertura y cambio de la posición de ventana

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 

namespace swflauncher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process flash = new Process(); 
      flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 

      flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe"; 
      flash.Start(); 
     } 
    } 
} 

Respuesta

6

Prueba SetWindowPos como se describe here. This página muestra cómo llamarlo desde C#.

+2

No es una buena respuesta porque no se proporciona ningún código de trabajo. Además, la página que muestra "cómo llamar desde C#" es un desastre _y_ no proporciona realmente un ejemplo completamente funcional (método desconocido GetActiveWindowHandle). La respuesta más baja del autor es mucho mejor. Conciso y funcional. –

5

Una vez que comience la Process, su propiedad MainWindowHandle debe establecerse en algún mango de Windows que se puede utilizar para manipular con la ventana principal de la aplicación iniciada. No creo que exista una forma de moverlo directamente utilizando .NET API, pero puede usar la función de API MoveWindow a través de P/Invoke.

Éstos son algunos enlaces donde se puede encontrar más información:

+1

Process.WaitForInputIdle() será importante. –

29

gracias chicos, ¡está trabajando ahora! :)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.Runtime.InteropServices; 
using System.Threading; 

namespace swflauncher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process flash = new Process(); 
      flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 

      flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe"; 
      flash.Start(); 
      Thread.Sleep(100); 

      IntPtr id = flash.MainWindowHandle; 
      Console.Write(id); 
      Program.MoveWindow(flash.MainWindowHandle, 0, 0, 500, 500, true); 
     } 

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


    } 
} 
+4

Mucho mejor que la respuesta porque realmente se molestó en compartir el código de trabajo, gracias. – u8it

Cuestiones relacionadas