Изменить размер окна C # - PullRequest
4 голосов
/ 04 ноября 2011

Можно ли изменить размер окна запущенного приложения из другого приложения?Я хочу, чтобы при запуске приложения, которое я создаю, ширина другого приложения (скажем, itunes) была уменьшена до 2/3, чтобы оставшаяся треть была занята моим приложением.Два приложения должны быть запущены в целом и доступны для пользователя.Пожалуйста, помогите, если это возможно.

Ответы [ 2 ]

11 голосов
/ 04 ноября 2011

Вы можете использовать SetWindowPos для изменения размера окна другого процесса.

    [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);
        }
    }
4 голосов
/ 04 ноября 2011

Вам необходимо получить дескриптор Windows, поэтому используйте функцию FindWindow в http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx, затем передайте дескриптор окну, используя SendMessage.

. Вам нужно SendMessage вhttp://msdn.microsoft.com/en-us/library/ms644950.aspx или PostMessage при http://msdn.microsoft.com/en-us/library/ms644944(VS.85).aspx с WM_SIZE (0x0005) и укажите размер.

...