Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Use Windows.Graphics.Capture when a user should choose a window or display, and use DXGI Desktop Duplication when you need a continuous stream of desktop frames. Use BitBlt for a traditional GDI copy of a known rectangle, and PrintWindow when you want an application to render its window into your device context. These APIs implement different capture models; choosing one depends on what must be captured, how often, and whether the result should show current desktop pixels or an app-rendered view.
Choose by capture goal
| API | Best fit | What it actually does | Important obligations |
|---|---|---|---|
Windows.Graphics.Capture |
A user-selected window or display; snapshots or streams | Uses system capture UI and delivers frames | Check GraphicsCaptureSession.IsSupported(); follow the app-model setup; expect a visible yellow capture border |
| DXGI Desktop Duplication | Repeated desktop frames for streaming, collaboration or remote access | Exposes desktop updates through a DXGI surface, including dirty and move regions and pointer information | Release frames, process metadata, handle display rotation, and recreate duplication after relevant desktop or display-mode changes |
BitBlt |
One-off or occasional copy of a known rectangle | Copies pixels between GDI device contexts according to a raster operation | Use compatible DCs and bitmaps; choose flags such as SRCCOPY and, when appropriate, CAPTUREBLT; check failures |
PrintWindow |
A specific window whose owning application should render its contents | Sends a synchronous request for the target app to draw into your supplied DC | The call can block; PW_CLIENTONLY limits the request to the client area; output is not necessarily the visible desktop rectangle |
For a normal user-facing screenshot picker, start with Windows.Graphics.Capture. For a remote-desktop or video pipeline, start with Desktop Duplication. Choose the GDI APIs only when their rendering semantics match your requirement.
Windows.Graphics.Capture: the consent-oriented path
Microsoft describes this namespace as providing APIs to acquire frames from a display or application window for video streams or snapshots. The system picker lets the user select the item, and Windows draws a yellow border around an active capture so the operation is visible.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Typical flow
- Verify support with
GraphicsCaptureSession.IsSupported()and apply the documented setup for your Windows app model. - Create the system picker and ask the user to select a display or application window.
- Create a frame pool for the selected item and a capture session.
- On each frame-arrival event, copy or encode the frame. For a still image, save the first suitable frame and stop the session; for video, continue processing until the user stops.
- Dispose the frame pool and session when finished, and respond to the target closing or becoming unavailable.
This model is appropriate when the user, rather than your code, chooses the capture target. It also gives you the same frame-based foundation for a single screenshot and a stream.
#1 Best Overall
- 【1080P 60FPS Video Capture Card】 This HDMI game capture card is based on USB3.0 high speed transmission port, input resolution up to 4K@30HZ, output resolution up to 2K@30Hz or 1920×1080@60Hz. Type c and USB interface can meet most of the devices in daily life. Easily meet the online capture, real-time recording, online meetings, live gaming and other functions, so you have a better visual enjoyment. Note: For capture use only; requires capture software to function and is not intended for direct screen casting to a monitor or TV
- 【Ultra Low Latency Screen Sharing】 HDMI capture card is made of good quality aluminum alloy with strong heat dissipation, allowing you to enjoy ultra low latency while live gaming or video recording or live streaming, avoiding blue screens and lag. This HDMI to USBC capture card supports easy recording of good quality audio or HD video and transferring it to your computer or streaming platform, allowing you to record 60 fps HD video directly on your hard drive and real-time preview
- 【Plug and Play, Easy to Carry】 This HDMI 1080P video capture card does not require any additional drivers or external power supply, just plug and play for fast capture. The capture card is small and lightweight, so you can put it in your bag for emergencies, making it very portable for outdoor live streaming. It's also a great way to share content in game recording, video conference, video recorder and online teaching
- 【Wide Compatibility USB Capture Card】 Easily streams to Facebook, Youtube or Twitch. With the connection, this HDMI to USB C/3.0 video capture devices can be working on several Operating Systems and various software: Windows 7/ 8/ 10, Mac OS or above, Linux, Android, Laptop, Xbox One, PS3/PS4/PS5, Camera, DVDs, Set Top Box, Webcame, DSLR, Switch/Switch 2, TV BOX, HDTV, Potplayer/VLC, ZOOM, OBS Studio etc.
- 【Package Content & Note】 1x HD Audio Capture Card , 1x USB 3.0 to USB C Adapter (A-side 3.0, B-side 2.0), 1x user manual. Please note that you need to restart the OBS Studio software after the audio setup is complete, otherwise it will result in no sound output. When using an adapter, if the device is recognized as USB 2.0, try using the other side with the USB-C port. Simply flip the capture card and reconnect it to be recognized as USB 3.0
Support and lifecycle checks
- Support varies by device and app model. Do not assume that every Windows environment can create a session; test
IsSupported()and provide a fallback or an explanatory error. - The picker and border are part of the consent and visibility model. They are not optional decorations that your application can silently remove.
- Keep frame processing off the UI thread. A slow encoder or disk write should not block picker interaction or frame delivery.
DXGI Desktop Duplication: continuous desktop frames
Desktop Duplication is designed for repeated desktop capture. Each acquired frame is a DXGI surface, and the API can report dirty rectangles, move rectangles and pointer information. A remote-access or collaboration client can therefore update only changed regions instead of treating every frame as a wholly new bitmap.
Pipeline
- Obtain the relevant DXGI adapter and output, then create a duplication interface for that output.
- Acquire the next frame with the API’s timeout. A timeout means no update arrived in the interval; it is not automatically a fatal error.
- Read the frame-resource metadata, including dirty and move regions and pointer updates.
- Copy the changed surface data into your encoder, compositor or transport buffer.
- Release the acquired frame promptly before requesting the next one.
- Recreate the duplication interface after the documented desktop or display-mode changes, and account for per-display rotation when interpreting the surface.
This is more machinery than a one-shot screenshot requires, but the metadata and GPU-oriented surface are valuable when latency, bandwidth or sustained capture matters.
Rotation, pointer and display changes
Outputs can have different orientations. Your compositor must apply the required rotation for each display rather than assuming that every acquired surface is already in the final orientation. Pointer shape and position may be supplied separately, so decide whether the remote image should include the pointer and composite it consistently. When a monitor is removed, its mode changes, or the desktop duplication object becomes invalid, stop acquiring frames, rebuild the interfaces and resume from a fresh frame.
BitBlt: copy pixels between GDI device contexts
BitBlt is a raster-operation primitive, not a picker or streaming API. The common SRCCOPY operation copies source pixels to the destination. Adding CAPTUREBLT requests that layered windows over the target be included where supported.
Rank #2
- 【4K HDMI Input, 2K@30Hz Recording】Powered by a true USB 3.0 high-speed interface, the capture card supports up to 4K@30Hz HDMI input and records at 2K@30Hz or 1080P@60Hz. Perfect for gamers, streamers, and professionals who need crisp, smooth video for live streaming, gameplay recording, or online meetings.
- 【Ultra Low Latency Screen Sharing】Built with a premium aluminum alloy shell and advanced chipset for stable heat dissipation, ensuring ultra-low latency transmission. Capture high-quality video and dual-channel audio in real time—no lag, no frame drop—ideal for Twitch, YouTube, or OBS streaming.
- 【Easy Plug and Play, Compact & Portable】No driver or external power required—just plug and play via USB 3.0 or Type-C connection to your Windows or macOS computer. Lightweight and compact design makes it easy to carry for outdoor streaming, live shows, or mobile recording setups.
- 【Wide Compatibility & Multi-Device Support】Compatible with Windows 7 8 10 11, macOS, Linux,Android and supports most popular software such as OBS, Zoom, VLC, Twitch Studio, and more. Works seamlessly with PS4, PS5, Xbox, Switch, DSLR cameras, TV boxes, and other HDMI-output devices for streaming to YouTube, Twitch, etc.
- 【What You Get】Includes: HDMI Capture Card, USB 3.0 to USB-C Adapter, User Manual. Tips: Make sure your tablet’s OTG function is enabled before connecting. Test your HDMI device with a monitor first to confirm video and audio output, then connect to the Video Capture Card for recording.
Minimal C++ example
#include <windows.h>
bool CaptureRect(HDC source, int x, int y, int width, int height, HBITMAP* result) {
HDC memory = CreateCompatibleDC(source);
if (!memory) return false;
HBITMAP bitmap = CreateCompatibleBitmap(source, width, height);
if (!bitmap) {
DeleteDC(memory);
return false;
}
HGDIOBJ old = SelectObject(memory, bitmap);
BOOL ok = BitBlt(memory, 0, 0, width, height, source, x, y,
SRCCOPY | CAPTUREBLT);
SelectObject(memory, old);
DeleteDC(memory);
if (!ok) {
DeleteObject(bitmap);
return false;
}
*result = bitmap;
return true;
}
int main() {
HDC screen = GetDC(nullptr);
HBITMAP shot = nullptr;
bool ok = CaptureRect(screen, 0, 0,
GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN), &shot);
ReleaseDC(nullptr, screen);
if (ok) {
// Encode or save shot, then call DeleteObject(shot).
DeleteObject(shot);
}
return ok ? 0 : 1;
}
The compatible memory DC and bitmap provide a destination for the copy. You still need an encoder or image-file routine to turn the HBITMAP into PNG, JPEG or another format. Check the return value: unsupported device combinations, source transformations and destination clipping can make a copy fail or produce a clipped result.
When BitBlt is the wrong abstraction
- It does not ask the user to choose a target.
- It copies a rectangle from a DC; it does not provide Desktop Duplication’s dirty-region or pointer metadata.
- It represents pixels available through the selected DC, which is different from asking an application to render its window.
PrintWindow: ask the target application to render
PrintWindow copies a visual window into a device context by sending a rendering request to the window’s owning application. The operation is synchronous and may block while that application processes the request. With PW_CLIENTONLY, request only the client area.
BOOL ok = PrintWindow(hwndTarget, hdcDestination, PW_CLIENTONLY);
if (!ok) {
// The target declined or the request failed; inspect GetLastError
// where applicable and choose a fallback.
}
Use this when the distinction between a window’s own rendering and the currently visible desktop matters. It is not a substitute for copying the rectangle the user sees: occlusion, minimized state, custom rendering and an application’s response to the request can affect the result.
Decision checklist
- User selects a window or monitor:
Windows.Graphics.Capture. - One known rectangle from the desktop:
BitBlt, provided GDI pixels and its clipping behavior are acceptable. - One known window, rendered by that application:
PrintWindow, with a timeout strategy because the call is synchronous. - Many frames for streaming or remote control: Desktop Duplication.
- Need changed-region and cursor metadata: Desktop Duplication.
- Need a snapshot and a stream from the same user-selected target:
Windows.Graphics.Capture.
Reliability and performance considerations
Do not block capture infrastructure
Frame callbacks, duplication acquisition and encoding should be separated with a bounded queue. Drop or coalesce stale frames when the consumer is slower than the producer; otherwise memory use and latency grow together. For PrintWindow, invoke the synchronous call away from the UI thread and enforce an application-level timeout.
Rank #3
- 【1080P HD High Quality】Capture resolution up to 1080p for video source and it is ideal for all HDMI devices such as PS4, PS3, Xbox One, Xbox 360, Wii U, DVDs, DSLR, Camera, Security Camera and set top box. Note: Video input supports 4K30/60Hz and 1080p120/144Hz. Does not support 4K120Hz/144Hz. Output supports up to 2K30Hz.
- 【Plug and Play】No driver or external power supply required, true PnP. Once plugged in, the device is identified automatically as a webcam. Detect input and adjust output automatically. Won't occupy CPU, optional audio capture. No freeze with correct setting.
- 【Compatible with Multiple Systems】suitable for Windows and Mac OS. High speed USB 3.0 technology and superior low latency technology makes it easier for you to transmit live streaming to Twitch, Youtube, Facebook, Twitter, OBS, Potplayer and VLC.
- 【HDMI LOOP-OUT】Based on the high-speed USB 3.0 technology, it can capture one single channel HD HDMI video signal. There is no delay when you are playing game live.
- 【Support Mic-in for Commentary】Rybozen capture card has microphone input and you can use it to add external commentary when playing a game. Please note: it only accepts 3.5mm TRS standard microphone headset.
Handle changing displays
Monitors can rotate, change mode or disappear. Desktop Duplication clients must recreate interfaces after the relevant changes. Graphics Capture clients should handle a selected window closing and tear down the frame pool cleanly. GDI code should recalculate coordinates and bitmap sizes after a display configuration change.
Choose where conversion occurs
Desktop Duplication exposes a DXGI surface, which can remain on the GPU through compositing or encoding. BitBlt produces a GDI bitmap and is convenient for legacy code but may require an additional conversion before modern encoding. Graphics Capture is frame-based, so select a pixel format and copy strategy that match your encoder rather than converting every frame unnecessarily.
Troubleshooting common failures
The picker or session cannot start
Check GraphicsCaptureSession.IsSupported(), verify the documented app-model setup, and test on a supported Windows device. Treat unsupported environments as a capability result, not as a transient network-style retry.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The screenshot is missing layered content
For GDI capture, try the CAPTUREBLT flag with SRCCOPY when layered windows should be included. If you need an application’s own rendering instead of desktop pixels, use PrintWindow and account for its synchronous behavior.
Rank #4
- [Enhanced 4K-1080P Video Capture Experience] Capture the Magic: Elevate your video recordings to new heights with our upgraded anti-static 1080P Video Capture Card. Immerse yourself in stunning visuals, supporting HDMI input at 4K 60FPS and USB output for capturing in 1080P, complete with rich stereo sound. Enjoy crystal-clear video recordings, dynamic gaming live streams, and professional conference broadcasts. Note: HDMI resolution: Max input can be 3840×2160@30Hz / Video output resolution: Max output can be 1920×1080@30Hz
- [Seamless Real-Time Preview] Stay in the Moment: Our advanced ultra-low latency technology ensures seamless real-time transmission of video streams. Experience instant, lag-free previews, allowing you to capture every detail precisely. Effortlessly record video directly to your hard disk, all without compromising on quality or introducing any delays.
- [Versatility and Broad Compatibility] Your Creative Hub: Connect your DSLR, camcorder, or action camera to a wide range of operating systems, including Windows, MacOS, and Linux. Unlock a world of possibilities with real-time streaming to popular platforms like Twitch, Youtube, OBS, Zoom, Potplayer, and VLC, giving you the tools to share your content effortlessly.
- [Effortless Plug and Play] Simplicity Redefined: Say goodbye to complex installations. Our plug-and-play design eliminates the need for drivers or external power supplies. Seamlessly integrate high-definition acquisition into various scenarios, whether it's educational recordings, immersive gaming, precise medical imaging, captivating live streams, or professional broadcasting.
- [Seize Every Detail with Precision] Unleash your creativity and attention to detail with our video capture card. Capture every nuance, every color, and every moment with precision, thanks to the enhanced capabilities of our technology. Whether you're a content creator, a gamer, or a professional, our capture card empowers you to seize the finest elements and bring them to life in your recordings and live streams.
Desktop Duplication stops after a monitor change
Release the current frame, discard the invalid duplication object, reacquire the adapter/output and recreate duplication. Reapply output rotation and pointer state before publishing the next frame.
PrintWindow hangs or returns an unexpected image
The target application owns the rendering request and may block or render differently from the visible desktop. Run the call off the UI thread, impose a timeout, and fall back to a desktop-pixel method when the requirement is what the user currently sees.
BitBlt returns failure
Confirm that the source and destination DCs are compatible, the bitmap dimensions are valid, and the destination has not been clipped unexpectedly. Log the Boolean result and relevant dimensions before attempting to encode the bitmap.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesOr skip the browser setup
If what you actually need is a screenshot of a web page rather than the Windows desktop, ScreenshotNeo provides a single HTTP request. It removes cookie and consent banners, newsletter popups and chat widgets before capture; bot checks, blank pages, timeouts, failed loads and cache hits are not billed, with the response identifying the page verdict and billing status. Its MCP server lets AI agents use take_screenshot, get_page_info and capture_pdf from Claude, Cursor or another MCP client.
Use the API documentation at https://screenshotneo.com/docs/ for parameters and options:
Best Value
- 【1080P 60FPS & 2K 30FPS】Supports HDMI input up to 4K 30FPS for ultra‑clear source signals, and captures/streams smooth footage at max 1080P 60FPS or 2K 60FPS to eliminate motion blur and stuttering, delivering fluid visuals for gaming, live streaming and video recording via high‑speed USB 3.0 transmission.
- 【USB 3.0 High-Speed Interface】USB 3.0 interface with up to 5Gbps bandwidth for lag-free HD capture and streaming with consoles, cameras, desktops, and laptops. Aluminum casing dissipates heat effectively, ensuring stable performance under prolonged high-bandwidth loads. Note: For best results, use a USB 3.0 port.
- 【Easy Plug-and-Play design】with no additional driver software required. The 2-in-1 USB-A & Type-C interface design ensures wide compatibility with laptops, desktops, gaming consoles and mobile devices. Its compact and lightweight construction enhances portability, allowing you to carry and use it effortlessly anytime and anywhere.
- 【Wide Universal Compatibility】Works with diverse devices: laptops, tablets, PS4/PS5, Nintendo Switch, cameras, TV boxes, and Oculus Quest 2/3. It supports major operating systems: Windows 7/8/8.1/10, Mac OS, Linux, Android, and iPadOS 17+. Fully compatible with popular software and streaming platforms like OBS Studio, QuickTime Player, TikTok, Twitch, and YouTube—all without requiring drivers.
- 【Worry-Free After-Sales Support】Whether you're a newcomer or a seasoned user, feel free to reach out anytime with any questions—your satisfaction is our top priority. NOTE: This capture card supports one-way transmission only (HDMI to USB), and ensure your device is equipped with a USB 3.0 port to achieve optimal performance.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
It also supports full-page lazy-image loading, CSS-selector element capture, dark mode, device presets and custom viewports, retina scale, PDF controls, custom CSS and JavaScript, pre-capture clicks, selector or network-idle waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, configurable caching, signed image links, asynchronous webhooks, bulk capture of up to 100 URLs per call, usage reporting and an OpenAPI specification. The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
Frequently Asked Questions
Can these APIs capture a monitor that is not currently visible?
The choice depends on the API’s capture model and Windows support. Graphics Capture and Desktop Duplication are the documented paths for display acquisition; test the exact multi-monitor and display-mode behavior in your target app and hardware configuration.
Free tools Windows power users keep installed
One-click scans. No signup required.
Should I save every Desktop Duplication frame?
No. Use dirty and move metadata to update only changed regions when your transport or encoder supports it, and release each acquired frame promptly.
Does PrintWindow guarantee the same pixels a user sees?
No. It asks the owning application to render into your DC, so its result differs from copying the visible desktop rectangle.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

