加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何编写代码以在C#中获取我的机器上的直接X版本?

发布时间:2020-12-15 17:17:10 所属栏目:百科 来源:网络整理
导读:参见英文答案 Check which version of DirectX is installed????????????????????????????????????2个 我想知道当用户点击菜单项时,他应该能够知道他的机器上安装的直接X版本? 我想在VS2008中用C#编写代码. 我应该在菜单项点击事件中写什么? ?我是C#的初学
参见英文答案 > Check which version of DirectX is installed????????????????????????????????????2个
我想知道当用户点击菜单项时,他应该能够知道他的机器上安装的直接X版本?

我想在VS2008中用C#编写代码.

我应该在菜单项点击事件中写什么?
?我是C#的初学者,所以不知道从哪里开始..

任何人都可以帮忙吗?
谢谢..

解决方法

这可能会有所帮助: .NET How to detect if DirectX 10 is supported?.

编辑:

以下是我认为的一些更好的代码.我能想到的最好的是基于Windows版本的DX10或DX11检查.这不是100%准确(因为Vista可以升级到DX11,但我没有检查这个),但总比没有好.

private int GetDirectxMajorVersion()
    {
        int directxMajorVersion = 0;

        var OSVersion = Environment.OSVersion;

        // if Windows Vista or later
        if (OSVersion.Version.Major >= 6)
        {
            // if Windows 7 or later
            if (OSVersion.Version.Major > 6 || OSVersion.Version.Minor >= 1)
            {
                directxMajorVersion = 11;
            }
            // if Windows Vista
            else
            {
                directxMajorVersion = 10;
            }
        }
        // if Windows XP or earlier.
        else
        {
            using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWAREMicrosoftDirectX"))
            {
                string versionStr = key.GetValue("Version") as string;
                if (!string.IsNullOrEmpty(versionStr))
                {
                    var versionComponents = versionStr.Split('.');
                    if (versionComponents.Length > 1)
                    {
                        int directXLevel;
                        if (int.TryParse(versionComponents[1],out directXLevel))
                        {
                            directxMajorVersion = directXLevel;
                        }
                    }
                }
            }
        }

        return directxMajorVersion;
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读