Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何最大化背景中的窗口?_C#_Winapi - Fatal编程技术网

C# 如何最大化背景中的窗口?

C# 如何最大化背景中的窗口?,c#,winapi,C#,Winapi,我需要在背景中最大化一个窗口,这意味着不激活(聚焦)它。 SetWindowPlacement函数不提供此功能。。 有什么想法吗 WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); GetWindowPlacement(hwnd, ref wp); wp.showCmd = 3; SetWindowPlacement(hwnd, ref wp); 请在加载windows时使用以下代码

我需要在背景中最大化一个窗口,这意味着不激活(聚焦)它。 SetWindowPlacement函数不提供此功能。。 有什么想法吗

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