Capture screenshot of active window?
ScreenCapture sc = new ScreenCapture();
// capture entire screen, and save it to a file
Image img = sc.CaptureScreen();
// display image in a Picture control named imageDisplay
this.imageDisplay.Image = img;
// capture this window, and save it
sc.CaptureWindowToFile(this.Handle,"C:\\temp2.gif",ImageFormat.Gif);
http://www.developerfusion.com/code/4630/capture-a-screen-shot/
How can I take a screenshot in a windows application?
HDC hScreenDC = GetDC(nullptr); // CreateDC("DISPLAY",nullptr,nullptr,nullptr);
HDC hMemoryDC = CreateCompatibleDC(hScreenDC);
int width = GetDeviceCaps(hScreenDC,HORZRES);
int height = GetDeviceCaps(hScreenDC,VERTRES);
HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC,width,height);
HBITMAP hOldBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hBitmap));
BitBlt(hMemoryDC,0,0,width,height,hScreenDC,0,0,SRCCOPY);
hBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hOldBitmap));
DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);
Get a screenshot of a specific application
Here's some code to get you started:
public void CaptureApplication(string procName)
{
var proc = Process.GetProcessesByName(procName)[0];
var rect = new User32.Rect();
User32.GetWindowRect(proc.MainWindowHandle, ref rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
var bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
using (Graphics graphics = Graphics.FromImage(bmp))
{
graphics.CopyFromScreen(rect.left, rect.top, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
}
bmp.Save("c:\\tmp\\test.png", ImageFormat.Png);
}
private class User32
{
[StructLayout(LayoutKind.Sequential)]
public struct Rect
{
public int left;
public int top;
public int right;
public int bottom;
}
[DllImport("user32.dll")]
public static extern IntPtr GetWindowRect(IntPtr hWnd, ref Rect rect);
}
It works, but needs improvement:
- You may want to use a different mechanism to get the process handle (or at least do some defensive coding)
- If your target window isn't in the foreground, you'll end up with a screenshot that's the right size/position, but will just be filled with whatever is in the foreground (you probably want to pull the given window into the foreground first)
- You probably want to do something other than just save the bmp to a temp directory
How to get the screenshot of the form
Even simpler answer supported by .NET:
Control.DrawToBitmap.
Best way to take screenshot in windows 10
I accidently found a easy way to take screenshot of my screen in windows 10.
Just hold Windows Logo Key + Shift Key + S
Than you can select what part of the screen you want to take the screenshot.
This will copy of a selected part to your clipboard and than you can simply past it in Paint, photoshop or any image app you want.
Thanks @Abhi
There are many other ways to do this as well:
1. Snipping Tool : Start > All Programs > Windows Accessories > Snipping Tool.
2. Windows Key + Print Screen : Windows Key + PrtScn.
How to take Screen shot in windows store apps
You can capture you screen using RenderTargetBitmap
. Try this code:
//create and capture Window
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(Window.Current.Content);
//create unique file in LocalFolder
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("screenshotCapture.jpg", CreationCollisionOption.GenerateUniqueName);
//create JPEG image
using (var stream = await file.OpenStreamForWriteAsync())
{
var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream.AsRandomAccessStream());
encoder.SetPixelData(BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Straight,
(uint)renderTargetBitmap.PixelWidth,
(uint)renderTargetBitmap.PixelHeight, logicalDpi, logicalDpi,
pixelBuffer.ToArray());
await encoder.FlushAsync();
}
Related Topics
Std::Endl Is of Unknown Type When Overloading Operator≪≪
Tellg() Function Give Wrong Size of File
What Does It Mean to "Odr-Use" Something
Error Lnk2019: Unresolved External Symbol _Winmain@16 Referenced in Function _Tmaincrtstartup
What Are Inline Namespaces For
Why Does Optimisation Kill This Function
How to Succinctly, Portably, and Thoroughly Seed the Mt19937 Prng
Check If a String Contains a String in C++
Export All Symbols When Creating a Dll
What Are the Differences Between .So and .Dylib on Macos
When Can Outer Braces Be Omitted in an Initializer List
How to Output a Character as an Integer Through Cout
Why Use Std::Bind Over Lambdas in C++14
How to Hide a String in Binary Code
Why Should I Avoid Multiple Inheritance in C++
Lock-Free Progress Guarantees in a Circular Buffer Queue
Will Using Goto Leak Variables
When Vectors Are Allocated, Do They Use Memory on the Heap or the Stack