ScreenshotNeo

BlogScreenshots on your device

How to Capture Screenshots in a Virtual Machine

Capture the guest display, VM window, or host desktop with the right VirtualBox, Hyper-V, VMware Fusion, and host shortcuts.

By the ScreenshotNeo team1 October 20267 min read

Direct answer: decide what you need to capture first. Use a hypervisor command or menu when you need only the guest display, send Print Screen to the guest when the guest OS must handle the key, and use the host operating system’s screen tool when you need the VM window, host menus, or the surrounding desktop.

A screenshot is an image of displayed content. A VM checkpoint or snapshot records machine state so you can restore it later; it is not a screenshot. Microsoft’s VMConnect documentation lists Ctrl+C for screen capture and Ctrl+N for creating a checkpoint. Microsoft’s shortcut table documents the distinction.

Choose the right capture

What you need Best approach Result
Guest display only, saved as an image Hypervisor capture command or function Image of the virtual display without host chrome
Guest application handling Print Screen Send or forward the key from the VM menu Image placed in the guest clipboard or handled by the guest
Entire VM window or host desktop Host operating system screenshot tool Host-visible pixels, which can include menus and other windows
Return to an earlier machine state Checkpoint or snapshot Restorable VM state, not an image

Before capturing, note the hypervisor, host OS, guest OS, display count, and whether the VM is windowed or full-screen. Keyboard shortcuts and menu names vary by product version.

VirtualBox: save the guest display as PNG

VirtualBox provides a host-side VBoxManage command that saves the guest display directly as a PNG. The command does not require you to open a host screenshot tool.

VBoxManage controlvm "VM name" screenshotpng "/path/to/screenshot.png"
  1. Start the virtual machine.
  2. Wait until the guest display shows the state you want.
  3. Run the command on the host where VBoxManage is installed.
  4. Open the resulting PNG and verify that it contains the guest display rather than the host window.

Oracle’s command documentation states that this captures the guest display and saves it as PNG. For a single-monitor guest, the display number is 0. If the guest has multiple displays, consult the manual for your installed VirtualBox release and select the appropriate display.

VirtualBox multi-display and sizing notes

  • Capture each display separately when your release exposes a display selector.
  • Make sure the guest display is enabled before capturing; a disabled display can produce an empty or unexpected result.
  • Guest Additions provide extra video modes and, for Windows, Linux, and Solaris guests, VM-window resizing. They improve display integration but are not required for the documented VBoxManage screenshot command.

Reference: Oracle VirtualBox controlvm documentation and VirtualBox Guest Additions display documentation.

Hyper-V: capture from VMConnect

In a Hyper-V VMConnect session, Microsoft documents Ctrl+C as the screen-capture shortcut.

  1. Open the VM in VMConnect.
  2. Click inside the VM so keyboard focus is in the VMConnect window.
  3. Press Ctrl+C.
  4. Save or handle the resulting capture according to the VMConnect version and host workflow.

Do not use Ctrl+N when you want an image: Microsoft documents that shortcut as checkpoint creation. Ctrl+E reverts to a checkpoint.

If Ctrl+C is intercepted by the guest or does nothing, confirm that VMConnect has focus and check the shortcut list for the Windows Server and VMConnect version you are running. A full-screen host capture is an alternative when you need the visible VMConnect window itself.

VMware Fusion: send Print Screen to a Windows guest

VMware Fusion can send the guest’s Print Screen key through its menu:

  1. Focus the Windows guest.
  2. Choose Virtual Machine > Send Key > Print Scrn.
  3. In the guest, paste the clipboard image into an image-capable application such as Paint or Word.
  4. Save the image from that guest application.

Broadcom documents that the action behaves like a regular Windows screen-print operation and puts an image of the window screen into the Windows clipboard.

Capture the Mac host instead

If you need the host-visible screen, Broadcom documents Command+Shift+3 to capture the whole Mac screen and save it to the Mac desktop. Depending on windowed or full-screen mode, that image can include host UI around the VM. Menu labels and behavior can vary by Fusion release, so confirm them against your installed version.

Reference: Broadcom’s VMware Fusion screenshot guidance.

Capture the VM window or host desktop

Use the host operating system’s screenshot utility when the required image is what a person can see on the host: the VM window, VMConnect controls, macOS menus, or other desktop context. This method is independent of the guest’s screenshot support, but it also captures anything else visible in the selected region.

  • Resize the VM window to the required dimensions before capturing.
  • Hide unrelated windows and notifications.
  • Use a region or window capture when available instead of a whole-desktop capture.
  • For reproducible documentation, record the host scaling setting and VM window size.

Or skip the browser setup

When the thing you need is a web page rendered inside a VM, ScreenshotNeo can return the page image from one request. It captures URLs rather than the entire VM desktop, so it is useful for web documentation, regression images, and shareable page renders.

See the ScreenshotNeo API documentation for all options.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

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)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Cookie banners, popups, and chat widgets are removed before the shot. Bot checks, blank pages, failed loads, timeouts, and cache hits are never billed, and response headers report the page verdict and billing status. An MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

Troubleshooting

Symptom Likely cause Fix
Blank or black image Guest display is not initialized, the VM is paused, or a display is disabled Resume the VM, wait for the desktop to render, verify the active display, and capture again.
Host controls appear in the image You used a host screenshot tool Use the hypervisor’s guest-display capture function, or crop to the VM client area.
Guest content is missing You captured the host window while the VM was minimized or covered Restore and focus the VM, then use a guest-display command or an unobstructed window capture.
Print Screen does nothing Keyboard focus is outside the VM, or the key was not forwarded Click the guest first; use the VM menu’s Send Key function where available.
VirtualBox command fails Wrong VM name, stopped VM, missing VBoxManage, or invalid output path Use the exact VM name, start the VM, run the command from the VirtualBox installation, and choose a writable absolute path.
Wrong monitor captured Multi-display guest selected the default display Specify the display supported by your installed VirtualBox release and capture each display separately if needed.
Capture has the wrong size Guest scaling, host display scaling, or VM window size changed Set the guest resolution and VM window dimensions before capture; record those settings for repeatability.
Checkpoint created instead of an image Hyper-V Ctrl+N was used Use VMConnect’s documented Ctrl+C capture shortcut.

Performance, reliability, and cost

  • Performance: direct guest-display capture avoids compositing host chrome. Large resolutions and multiple displays produce larger files and may take longer to save.
  • Reliability: capture only after the guest UI has settled. For repeatable documentation, use a fixed VM resolution, wait for the target application, and keep the same display selection.
  • Clipboard workflows: VMware Fusion’s Print Screen path depends on the guest clipboard and an image-capable guest application, adding a manual save step.
  • Host captures: they are simple but can include notifications, menus, or other windows and can vary with host scaling.
  • VirtualBox output: the documented command writes PNG. Convert it afterward if your publishing pipeline requires JPEG or WebP.
  • ScreenshotNeo billing: ScreenshotNeo charges only for clean shots. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed; check the X-Page-Verdict and X-Billed response headers.

Checklist

  • Choose guest display, VM window, or host desktop.
  • Confirm the hypervisor and host/guest versions.
  • Set the correct display, resolution, and scaling.
  • Wait for the guest content to finish rendering.
  • Use a direct guest capture when host UI must be excluded.
  • Use a checkpoint only when you need restorable VM state.
  • Review the saved image before sharing it.

FAQ

Is a VM snapshot the same as a screenshot?

No. A screenshot is an image; a snapshot or checkpoint records virtual machine state for restoration.

Can I capture one monitor from a multi-monitor VM?

Yes when the hypervisor’s capture command supports a display selector. VirtualBox documents display number 0 for a single-monitor guest; consult your installed release for multi-display syntax.

How do I capture only a website running in the VM?

Use the browser or hypervisor for the VM’s visible desktop, or call ScreenshotNeo with the site URL when you need a clean web-page render without the rest of the desktop.

Why does my screenshot include the host menu bar?

You used a host-level capture. Switch to the hypervisor’s guest-display function or select only the VM window.