2016-07-17 23 views
0

Wie programmiere ich programmatisch ein Programm, das ich gerade auf meinem PC ausgeführt habe. Zum Beispiel, wenn ich WINWORD.exe im Task-Manager ausgeführt habe. Wie maximiere ich es?Maximieren Sie das Fenster eines anderen laufenden Programms

In meinem Code habe ich versucht:

private void button1_Click(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Maximised; 
} 

Leider, dass nur meine Anwendung zeigt. Ich möchte, dass es eine andere exe maximiert, ABER wenn es es dann nicht finden kann, möchte ich es beenden.

+1

https://msdn.microsoft.com/en-us/library/system.windows.automation. windowpattern.setwindowvisualstate (v = vs.110) .aspx –

+0

Da ich

+0

Ich fügte auch ein einfaches Beispiel für [WindowPattern.SetWindowVisualState] hinzu (https://msdn.microsoft.com/en-us/library/system.windows.automation.windowpattern.setwindowvisualstate (v = vs.110) .aspx) Danke @HansPassant. –

Antwort

3

Mit Showwindow

Sie Fenster Zustand mit ShowWindow Verfahren einstellen. Dazu müssen Sie zuerst den Fenstergriff finden und dann die Methode verwenden. Dann maximieren das Fenster auf diese Weise:

private const int SW_MAXIMIZE = 3; 
[System.Runtime.InteropServices.DllImport("user32.dll")] 
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 
private void button1_Click(object sender, EventArgs e) 
{ 
    var p = System.Diagnostics.Process.GetProcessesByName("WINWORD").FirstOrDefault(); 
    if(p!=null) 
    { 
     ShowWindow(p.MainWindowHandle, SW_MAXIMIZE); 
    } 
} 

Mit WindowPattern.SetWindowVisualState

auch als eine weitere Option (basierend auf Hans Kommentar) Sie SetWindowVisualState Methode können Zustand eines Fensters. Um so so, fügen Sie zuerst einen Verweis auf UIAutomationClient.dll und UIAutomationTypes.dll fügen Sie dann using System.Windows.Automation; und maximieren das Fenster auf diese Weise:

var p = System.Diagnostics.Process.GetProcessesByName("WINWORD").FirstOrDefault(); 
if (p != null) 
{ 
    var element = AutomationElement.FromHandle(p.MainWindowHandle); 
    if (element != null) 
    { 
     var pattern = element.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern; 
     if (pattern != null) 
      pattern.SetWindowVisualState(WindowVisualState.Maximized); 
    } 
}