title: Unexpected behaviour of Process.MainWindowHandle
body: <p>I've been trying to understand <a href="http://msdn.microsoft.com/en-gb/library/system.diagnostics.process.mainwindowhandle.aspx" rel="nofollow noreferrer">Process.MainWindowHandle</a>.</p>
  
  <p>According to MSDN; "The main window is the window that is created when the process is started. After initialization, other windows may be opened, including the Modal and TopLevel windows, but <em>the first window associated with the process remains the main window</em>." (Emphasis added)</p>
  
  <p>But while debugging I noticed that MainWindowHandle seemed to change value... which I wasn't expecting, especially after consulting the documentation above.</p>
  
  <p>To confirm the behaviour I created a standalone WinForms app with a timer to check the MainWindowHandle of the "DEVENV" (Visual Studio) process every 100ms.</p>
  
  <p>Here's the interesting part of this test app...</p>
  
  <pre><code>    IntPtr oldHWnd = IntPtr.Zero;
  
      void GetMainwindowHandle()
      {
          Process[] processes = Process.GetProcessesByName("DEVENV");
  
          if (processes.Length!=1)
              return;
  
          IntPtr newHWnd = processes[0].MainWindowHandle;
  
          if (newHWnd != oldHWnd)
          {
              oldHWnd = newHWnd;
              textBox1.AppendText(processes[0].MainWindowHandle.ToString("X")+"\r\n");
          }
  
      }
  
      private void timer1Tick(object sender, EventArgs e)
      {
          GetMainwindowHandle();
      }
  </code></pre>
  
  <p>You can see the value of MainWindowHandle changing when you (for example) click on a drop-down menu inside VS.</p>
  
  <p><img src="https://i.stack.imgur.com/r54iB.png" alt="MainWindowHandleMystery"></p>
  
  <p>Perhaps I've misunderstood the documentation.  </p>
  
  <p>Can anyone shed light?</p>