wgc_grab_frame

最新フレームを BGRA バイト列で取得

wgc_grab_frame handle, buf, buf_size, w, h

handle   : セッションハンドル
buf      : 画素データを受け取る変数 (sx*sy*4 バイトの BGRA)
buf_size : buf に確保したバッファサイズ (バイト数)
w, h     : 幅と高さを受け取る int 変数

(プラグイン / モジュール : hspwgcapture.dll)

解説

FramePool::TryGetNextFrame() で最新フレームを取り出し、
IDirect3DDxgiInterfaceAccess 経由で ID3D11Texture2D を得て、
staging テクスチャにコピー → Map() → memcpy の順でピクセル
を CPU へ読み戻します。

format は B8G8R8A8UIntNormalized (各画素 4 バイト BGRA)。
buf は呼び出し側で sdimmemexpand 等で十分なサイズを確保
してから渡してください。確保したバッファサイズを buf_size に
指定します。

戻り値 (stat):
  0  : 成功
 -1  : 未初期化
 -2  : 不正ハンドル
 -3  : 非アクティブセッション
 -4  : フレーム未到着 (TryGetNextFrame が null を返した場合)

関連項目

wgc_save_png最新フレームを PNG ファイルに保存(hspwgcapture.dll)

情報

プラグイン / モジュールhspwgcapture.dll
バージョン1.0
作成日2026-04-15
著作者IronHSP / hspwgcapture
URLhttps://github.com/inovia/IronHSP
備考hspwgcapture.dll は Windows 10 1903 (19H1) 以降に搭載された
Windows.Graphics.Capture API (WinRT) を HSP3 から直接呼び出す
ためのプラグインです。

Windows.Graphics.Capture API はモダンな DWM 連携キャプチャを
提供し、従来の BitBlt / PrintWindow よりも高フレームレートで
GPU 上のウィンドウ / モニタ内容を取得できます。ハードウェア
アクセラレートされた D3D11 テクスチャ経由でピクセルが渡される
ため、全画面ゲームやハードウェア合成されたウィンドウでも正しく
キャプチャできます。

実装は C++/WinRT + D3D11 + WIC で、非同期 API は使用していま
せん (Direct3D11CaptureFramePool::CreateFreeThreaded の同期
ポーリング型)。HSP 側からは通常の同期命令として扱えます。

注意: Windows.Graphics.Capture を利用すると、対象ウィンドウ
に黄色の「キャプチャ中」ハイライト枠が表示されるのが既定動作
です (Windows 11 以降は設定で無効化可能)。
タイプ拡張命令
グループhspwgcapture ― フレーム取得
対応環境
  • その他 : Win32 / Win64 (Windows 10 1903 以降)
hs ファイルhsphelp\hspwgcapture.hs