【问题标题】:How does VNC continuously repaint windows?VNC如何不断重绘窗口?
【发布时间】:2011-04-29 20:51:01
【问题描述】:

即使用户不活动,VNC 如何向窗口发送 REPAINT 消息?

我想在 C 语言中实现这一点 - 我看过 PrintWindowSendMessage 方法,但它们都没有实现与 VNC 相同的功能(通过捕获图像及其黑色进行测试),但使用VNC 我得到了全貌。

他们使用什么技术来做到这一点,并且可以在 C sharp 中实现这一点,以使窗口在用户不活动时(即 RDP 已关闭、最小化或类似)总是重新绘制 即使

谢谢大家

【问题讨论】:

  • 我不明白你为什么认为PrintWindow 失败了。我理解你的问题的方式,应该完全符合你的要求。当您将 VNC 描述为“不断重绘窗口”时,我不太确定您的意思。
  • @Cody - 在我尝试之前我也是这么想的 PrintWindow(handle, hDC, 0); - 当我最小化与 Windows XP 机器的 RDP 连接时,它无法捕获图像。它在 RDP 未最小化时起作用。我以为我可以从内存中捕获窗口图像,但它产生的只是一个内部黑色的窗口。我尝试了不同类型的窗口(记事本、计算)。然后我安装了 VNC 并关闭了 VNC 查看器,它每次都能正常工作。即使用户处于非活动状态,它也有一些如何让窗口呈现。

标签: c# windows remote-desktop vnc vnc-server


【解决方案1】:

您可以使用视频游戏使用的技术,即在 CPU 空闲时间永久重绘一个窗口。

我找到了一个 C# 实现 here

你只需要根据你的需要调整它。

【讨论】:

  • 很有趣,我需要先阅读它,我还不想全力以赴!
【解决方案2】:

【讨论】:

  • 嗯,您得出的结论与您链接到的问题的答案所得出的结论不同。没错,VNC 不会发送WM_PAINT 消息,但这并不意味着当用户不活动时 Windows 会发送此消息。这些其他问题的解决方案要么涉及PrintWindow,要么利用 DWM 引入的新绘画功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多