2011-11-04 24 views
4

実行中のアプリケーションのウィンドウサイズを別のアプリケーション内から変更することはできますか? 私が構築しているアプリケーションが起動すると、もう1つのアプリケーション(つまり、itunes)の幅を2/3に減らして残りの1/3をアプリケーションで占有したいと思っています。 2つのアプリケーションは、完全に実行され、ユーザーがアクセス可能である必要があります。可能であればお手伝いください。 ウィンドウのサイズを変更する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

FindWindowの機能をhttp://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspxで使用し、SendMessageを使用してウィンドウにハンドルを渡す必要があります。

あなたはWM_SIZE(0x0005)でhttp://msdn.microsoft.com/en-us/library/ms644944(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms644950.aspxまたはPostMessageSendMessageに必要とサイズを指定します。

+0

ありがとうございます。私はこれらの参照を読んで、解決策を実装しようとします –

関連する問題