C# 如何最大化背景中的窗口?
我需要在背景中最大化一个窗口,这意味着不激活(聚焦)它。 SetWindowPlacement函数不提供此功能。。 有什么想法吗C# 如何最大化背景中的窗口?,c#,winapi,C#,Winapi,我需要在背景中最大化一个窗口,这意味着不激活(聚焦)它。 SetWindowPlacement函数不提供此功能。。 有什么想法吗 WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); GetWindowPlacement(hwnd, ref wp); wp.showCmd = 3; SetWindowPlacement(hwnd, ref wp); 请在加载windows时使用以下代码
WINDOWPLACEMENT wp = new WINDOWPLACEMENT();
GetWindowPlacement(hwnd, ref wp);
wp.showCmd = 3;
SetWindowPlacement(hwnd, ref wp);
请在加载windows时使用以下代码
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
}
这将使您的窗口最大化我能找到的最好的方法是(对不起!)
这只是一个解决办法,因为后台窗口(短暂)已激活,因此会按Z顺序升级请使用以下定义尝试此操作:
诀窍是使用SetWindowLong更改窗口状态,并使用SetWindowPosFlags.FrameChanged重新绘制它。在你使用SetWindowPosFlags.DoNotActivate时。你的意思是你想最大化windows formI,我忘了提到我需要最大化其他应用程序,而不是我的。对不起,这里的其他应用程序是什么意思?我想从我的应用程序中最大化其他窗口。例如,使用SetWindowPlacement API。只是不激活它们(其他窗口)。老实说,请放置您的代码,这样才能帮助您更进一步。这将使外部应用程序窗口最大化,但也会使其集中(这是我想要避免的):WINDOWPLACEMENT wp=new WINDOWPLACEMENT();GetWindowPlacement(hwnd,参考wp);wp.showCmd=3;设置窗口位置(hwnd,参考wp);
longForeHWnd = GetForegroundWindow
Call ShowWindow(longBackHWnd, SW_SHOWMAXIMIZED)
SetForegroundWindow (longForeHWnd)
WINDOWPLACEMENT placement;
if (GetWindowPlacement(hWnd, out placement))
{
if ((GetWindowLong(hWnd, GWL_EXSTYLE) & WS_EX_TOOLWINDOW) == 0)
{
var l = GetWindowLong(hWnd, GWL_STYLE);
SetWindowLong(hWnd, GWL_STYLE, (l | WS_MAXIMIZE) & (~WS_MINIMIZE));
var maxPos = placement.MaxPosition;
SetWindowPos(hWnd, IntPtr.Zero, maxPos.X, maxPos.Y, 0, 0, SetWindowPosFlags.AsynchronousWindowPosition | SetWindowPosFlags.DoNotActivate | SetWindowPosFlags.FrameChanged | SetWindowPosFlags.IgnoreResize | SetWindowPosFlags.IgnoreZOrder);
}
}