title: Automate of file download in IE 11 using c#
body: <p><a href="https://i.stack.imgur.com/h0LYg.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/h0LYg.jpg" alt="enter image description here"></a></p>
  
  <p>I am trying to get the window handler and press the Save button. I found couple of examples on IE8 &amp; 9. But that code doesn't works on IE 11.</p>
  
  <pre><code>    const int BM_CLICK = 0x00F5;
  
      [DllImport("user32.dll", SetLastError = true)]
      static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  
      [DllImport("user32.dll")]
      [return: MarshalAs(UnmanagedType.Bool)]
      static extern bool SetForegroundWindow(IntPtr hWnd);
  
      [DllImport("user32.dll", SetLastError = true)]
      static extern IntPtr SetActiveWindow(IntPtr hWnd);
  
      [DllImport("user32.dll", CharSet = CharSet.Auto)]
      public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr next, string sClassName, IntPtr sWindowTitle);
  
      [DllImport("user32.dll", SetLastError = true)]
      static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
  
      [DllImport("user32.dll", CharSet = CharSet.Auto)]
      static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
  
  
  
      [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
      public static extern uint GetDlgCtrlID(IntPtr hWnd); 
  
      [DllImport("user32.dll", CharSet = CharSet.Auto)]
      public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam); 
  
          //hDialog  - handle of dialog window. idBtn - Id of button
        public static bool ClickButtonOnDialog(IntPtr hDialog, UInt32 idBtn)
        {
            IntPtr res = IntPtr.Zero;
            uint id;
            IntPtr hOkBtn = IntPtr.Zero;
            int attempt = 0;
            do
            {
                Thread.Sleep(300);
                //searching for button
                hOkBtn = FindWindowEx(hDialog, hOkBtn, "Button", IntPtr.Zero);
                id = GetDlgCtrlID(hOkBtn);
                attempt++;
            } while (id != idBtn &amp;&amp; attempt &lt; 20);
            if (!hOkBtn.Equals(IntPtr.Zero))
            {
                //click the button
                res = SendMessage(hOkBtn, (int)BM_CLICK, 1, IntPtr.Zero);
            }
            if (res.ToInt32() == 1)
                return true;
            return false;
        }
  
        public static void FindAndSave()
        {
            IntPtr hOkBtn = IntPtr.Zero;
            uint message = 0xf5;
  
            IntPtr hwnd = FindWindow(null, "Internet Explorer");
            hOkBtn = FindWindowEx(hwnd, hOkBtn, "Button", "Cancel");
            SendMessage(hOkBtn, (int)message, 1, IntPtr.Zero);
  </code></pre>