none
求 C# mirror driver 截屏实例 RRS feed

  • 问题

  • 找的代码都是C++ 的,没有看到C#版的。望高人提供下。谢谢

    使用 BitBlt 截屏太慢了。。。


    不以物喜,不以己悲
    2011年3月11日 10:20

全部回复

  • 核心态程序不能用C#,C++默认都不行。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年3月12日 3:18
    版主
  • 有好的建议么?
    不以物喜,不以己悲
    2011年3月14日 2:33
  • 用C啦,内存分配得自己写,不能用windows的堆

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年3月14日 2:47
    版主
  • 我倒是用vb.net 写出来了 ,过去使用 api 截屏 1440*900 32位 需要 56毫秒 ,无法改进!directx 更慢不要试了

    最后使用 wdk 中的 mirror driver 作为虚拟驱动来工作,惊人的将截屏时间缩短为 7ms 125fps 左右,真惊人

    好倒是好,可是新问题又来了,必须将这个虚拟的显示器安装上让显卡通过这个显示器显示才行,并且安装的时候屏幕还是闪一下,怪讨厌的

    如果不安装 虚拟镜像,就不起作用

                    Dim dViceName As String = "\\.\DISPLAY4"
                    Dim dP As String = "DISPLAY"
                    hDC = GDIStuff.CreateDC(dP, dViceName, Nothing, Nothing)

    关于上面的代码,当不加载 mirror 时 总是不起作用 ,如果加载 mirror时 怎么写都起作用 ,哪怕 dviceName=nothng 也是7 ms 速度惊人的好

    我又写了个屏幕算法分屏求差异!5-8ms求出整屏的差异.总共才15ms 平均为66fps

    现在就剩下 传输层的实现啦。只要使用40ms来完成传输基本搞定!!

    痛苦的是必须要加载那个mirror 我在加载测试时使用ddmlapp.exe -e 来完成的,正好借你的宝地来征求些方式

    看看能不能只要得到驱动器名称就能使用镜像驱动!!



    另外补充 我是 win7 i5 机器估计到低端机器上性能有所下降,不过截屏速度应该下降不大,再就是如果使用16bit的分辨率,会更快!!
    我擦!!!擦!刚才试了一下 16位截屏 3ms!
    2011年3月19日 17:33
  • 你好,请问 这个虚拟驱动如何加载,VNC连接的时候也有这问题,屏幕会闪一下。


    不以物喜,不以己悲
    2011年3月29日 7:19