Question: I'm writing a simple Windows Forms utility to screenshot either the entire screen or an active window and save the file. The winform has a button called 'Capture' that, when clicked, takes the screenshot.

I have the code entirely working for the entire screen but can't figure it out for the active window.

By my current code, if I select 'Active Window', it ends up Print Screening the application itself which isn't what I want.

Here's my code (under the Capture\_Click method):

```
try
        {
            this.Hide();

            bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
            //bmpScreenshot = new Bitmap(this.Bounds.Width, this.Bounds.Height, PixelFormat.Format32bppArgb);

            gfxScreenshot = Graphics.FromImage(bmpScreenshot);

            if (AltPrint.Checked)
            {
                gfxScreenshot.CopyFromScreen(this.Bounds.X, this.Bounds.Y, 0, 0, this.Bounds.Size, CopyPixelOperation.SourceCopy);
            }
            else
            {
                gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
            }

            bmpScreenshot.Save(SaveLocation, ImageFormat.Png);

            number++;
        }

```

Answer: 
Your comments seem to understand that once your app gets the focus (when you click on it) the other app has lost it and is no longer 'active'.

A possible alternative: your application gets a [WM\_SETFOCUS](http://msdn.microsoft.com/en-us/library/ms646283%28v=vs.85%29.aspx) message when it gets focus. The wParam of that message is a handle to whichever window has just given up the focus -- and that window belongs to the app you want to capture.

Of course, that window will only be a subwindow or control, but you can figure out which app owns that button.
What about SendKeys?

```
Windows.Forms.SendKeys.Send("%{PRTSC}");

```

It will copy currently selected window in to Clipboard object.

Than calling 

```
BitmapSource image = Clipboard.GetImage();

```

you can get your image back