一个程序里面嵌入了 Mediaplayer, 由于播放时还要执行其他的描画功能,连个画面抢占 Screen 的 topMost,造成画面闪烁,后来发现只要关闭或降低显卡的硬件加速,一起问题就都解决了。 但是不想每次手动关闭和打开显卡硬加速,怎样用C#关闭和打开显卡的硬件加速?

解决方案 »

  1.   

    使用API或WMI.来控制"显示属性"中的硬件加速
      

  2.   

    楼上兄台,你有没有code 例子啊?
      

  3.   

    关于显卡信息的获取和设置有两个类:Win32_VideoController和Win32_VideoSettings
    现成的CODE没有,与WMI相关的代码可以参考:http://www.cnblogs.com/thunderdanky/articles/1230372.html
      

  4.   

     初始化时,可以先把Mediaplayer隐藏,然后通过模拟消息,如鼠标、键盘 操作,关闭显卡的硬件加速,然后再正常显示就行了。
      

  5.   

    另外,操作注册表也是可以实现的
    开启硬件优化用记事本编辑以下内容:
    Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vxd\BIOS]"CPUPriority"=dword:00000001"PCIConcur"=dword:00000001"FastDRAM"=dword:00000001"AGPConcur"=dword:00000001保存为开启硬件优化.reg导入你的注册表就行了
      

  6.   

    http://wenwen.soso.com/z/q95989890.htm?pid=wenwen.autologin
      

  7.   

    试试:public static void agp(bool open)   // 参数: true 打开, false 关闭
    {
        string agp = @"SYSTEM\CurrentControlSet\Services\Vxd\BIOS";
        RegistryKey key = Registry.LocalMachine.OpenSubKey(agp, true);
        key.SetValue("CPUPriority", (open)?1:0);
        key.SetValue("PCIConcur", (open) ? 1 : 0);
        key.SetValue("FastDRAM", (open) ? 1 : 0);
        key.SetValue("AGPConcur", (open) ? 1 : 0);
    }
      

  8.   

    我的注册表里
    CurrentControlSet\Services\
    下面没有 Vxd 键