2011-11-04 2 views
4

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

ответ

10

Вы можете использовать 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); 
     } 
    } 
+0

Большое спасибо. Это поможет мне начать работу –

+0

+1; хороший и простой, лучший ответ, чем мой. – AMissico

+0

Это, безусловно, ответ. –

4

Вам нужно получить дескриптор 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) и укажите размер.

+0

Thanks. Я попытаюсь прочитать эти ссылки и реализовать решение –

Смежные вопросы