如何以编程方式最大化我当前在电脑上运行的程序。例如,如果我在任务管理器中运行WINWORD.exe
。我如何最大化它?
在我的代码中,我尝试过:
private void button1_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximised;
}
不幸的是,它只显示我的应用程序。我希望它最大化另一个exe,但是如果它找不到它那么我想退出它。
答案 0 :(得分:7)
使用ShowWindow
您可以使用ShowWindow
方法设置窗口状态。为此,首先需要找到窗口句柄然后使用该方法。然后以这种方式最大化窗口:
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);
}
}
使用WindowPattern.SetWindowVisualState
另外,作为另一种选择(基于Hans的评论),您可以使用SetWindowVisualState
方法设置窗口的状态。为此,首先添加对UIAutomationClient.dll
和UIAutomationTypes.dll
的引用,然后添加using System.Windows.Automation;
并以这种方式最大化窗口:
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);
}
}