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.
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);
}
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With