Как сделать скриншот окна, содержащего дочерние элементы управления, такие как DropList ComboBox / Context Menu / ToolTips? - PullRequest
0 голосов
/ 03 июля 2019

Я некоторое время изучал реализацию скриншота окна:

  1. При использовании PrintWindow / BitBlt / DwmUpdateThumbnailProperties он в основном способен делать скриншоты, но исключает вышеперечисленные элементы управления.
  2. Вызов SendMessage (hwnd, WM_PRINT, (WPARAM) hDesDC, PRF_NONCLIENT | PRF_CLIENT | PRF_ERASEBKGND | PRF_CHILDREN | PRF_OWNED) для внутреннего окна процесса моего приложения может захватить эти элементы управления;но для окна других процессов это не будет работать --- я получил черный экран.Другими словами, вызов WM_PRINT между процессами не имеет никакого эффекта.Я также попытался внедрить метод Dll / CreateRemoteThread в качестве «прокси-сервера процесса целевого hwnd», но он не сработал, и с разрешениями было слишком много проблем.
  3. Однако я вижу, что «ZOOM Cloud Meetings Client"может захватить эти дочерние элементы управления.

Полезно или подсказано?

...