Resize window size C#

2020-07-17 02:26发布

Is it possible to resize a running application's window size from within another application? I want that when the application that I am building starts, another application (let's say itunes)'s width be reduced to its 2/3 so that the remaining 1/3 be occupied by my application. The two application should be running altogether and accessible by the user. Please help if possible.

2条回答
我只想做你的唯一
2楼-- · 2020-07-17 03:08

You can use SetWindowPos to resize another process's window.

    [DllImport("user32.dll")]
    private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, 
        int x, int y, int width, int height, uint uFlags);

    private const uint SHOWWINDOW = 0x0040;

    private void resizeItunes()
    {
        System.Diagnostics.Process[] itunesProcesses = 
            System.Diagnostics.Process.GetProcessesByName("iTunes");

        if (itunesProcesses.Length > 0)
        {
            SetWindowPos(itunesProcesses[0].MainWindowHandle, this.Handle,
                0, 0, Screen.GetWorkingArea(this).Width * 2 / 3,
                Screen.GetWorkingArea(this).Height, SHOWWINDOW);
        }
    }
查看更多
【Aperson】
3楼-- · 2020-07-17 03:12

You need to get the Windows' handle so use the FindWindow function at http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx then pass the handle to the window using SendMessage.

You need to SendMessage at http://msdn.microsoft.com/en-us/library/ms644950.aspx or PostMessage at http://msdn.microsoft.com/en-us/library/ms644944(VS.85).aspx with WM_SIZE (0x0005) and specify the size.

查看更多
登录 后发表回答