capture.interop.h 1.2 KB

123456789101112131415161718192021222324
  1. #pragma once
  2. #include <guiddef.h>
  3. #include <winrt/Windows.Graphics.Capture.h>
  4. #include <windows.graphics.capture.interop.h>
  5. #include <windows.graphics.capture.h>
  6. inline auto CreateCaptureItemForWindow(HWND hwnd)
  7. {
  8. auto activation_factory = winrt::get_activation_factory<winrt::Windows::Graphics::Capture::GraphicsCaptureItem>();
  9. auto interop_factory = activation_factory.as<IGraphicsCaptureItemInterop>();
  10. winrt::Windows::Graphics::Capture::GraphicsCaptureItem item = {nullptr};
  11. interop_factory->CreateForWindow(hwnd, winrt::guid_of<ABI::Windows::Graphics::Capture::IGraphicsCaptureItem>(), reinterpret_cast<void**>(winrt::put_abi(item)));
  12. return item;
  13. }
  14. inline auto CreateCaptureItemForMonitor(HMONITOR monitor)
  15. {
  16. auto activation_factory = winrt::get_activation_factory<winrt::Windows::Graphics::Capture::GraphicsCaptureItem>();
  17. auto interop_factory = activation_factory.as<IGraphicsCaptureItemInterop>();
  18. winrt::Windows::Graphics::Capture::GraphicsCaptureItem item = {nullptr};
  19. interop_factory->CreateForMonitor(monitor, winrt::guid_of<ABI::Windows::Graphics::Capture::IGraphicsCaptureItem>(), reinterpret_cast<void**>(winrt::put_abi(item)));
  20. return item;
  21. }