2010-06-13 4 views
10

Ich möchte von C# eine Anwendung (Standalone Flashplayer) öffnen und Position auf (0,0) auf dem Bildschirm setzen. Wie kann ich das machen? Bisher habe ich es geschafft Flashplayer zu öffnen:Öffnungsvorgang und Ändern der Fensterposition

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

Antwort

6

Versuchen SetWindowPos wie here. This Seite zeigt, wie es von C# aufgerufen wird.

+2

Keine gute Antwort, da kein funktionierender Code zur Verfügung steht. Darüber hinaus ist die Seite, die zeigt, "wie man sie von C# aus anruft", ein Chaos und stellt tatsächlich kein voll funktionierendes Beispiel bereit (unbekannte Methode GetActiveWindowHandle). Die niedrigere Antwort des Autors ist viel besser. Präzise und funktional. –

5

Sobald Sie die Process, seine MainWindowHandle Eigenschaft beginnen sollte zu einem gewissen Windows-Handle gesetzt werden, die für die Manipulation mit dem Hauptfenster der gestarteten Anwendung verwendet werden kann. Ich denke nicht, dass es eine Möglichkeit gibt, es direkt mit der .NET API zu verschieben, aber Sie können die API-Funktion MoveWindow über P/Invoke verwenden.

Hier sind einige Links, wo Sie weitere Informationen finden Sie unter:

+1

Process.WaitForInputIdle() wird wichtig sein. –

29

danke Jungs, es funktioniert jetzt! :)

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

Viel besser als die Antwort, weil Sie eigentlich Arbeitscode teilen, danke. – u8it

Verwandte Themen