Processo di apertura e modifica della posizione della finestra

Voglio aprire da C # un’applicazione (flashplayer autonomo) e impostarla su (0,0) sullo schermo. Come posso fare questo? Finora sono riuscito ad aprire flashplayer:

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(); } } } 

Prova SetWindowPos come descritto qui . Questa pagina mostra come chiamarla da C #.

grazie ragazzi, sta funzionando ora! 🙂

 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); } } 

Una volta avviato il Process , la proprietà MainWindowHandle deve essere impostata su un handle di Windows che può essere utilizzato per la manipolazione con la finestra principale dell’applicazione avviata. Non penso che ci sia un modo per spostarlo direttamente usando l’API .NET, ma puoi utilizzare la MoveWindow API di MoveWindow tramite P / Invoke.

Ecco alcuni link dove puoi trovare maggiori informazioni:

  • Proprietà MainWindowHandle di Process in MSDN
  • Funzione API MoveWindow su pinvoke.net