zoukankan      html  css  js  c++  java
  • unity 读取外部exe程序控制台信息

    由于需要获取显卡信息,但是unity的自带函数,只能输出1个显卡

    c#倒是可以但是引用了一个下载的dll   System.Management.dll

    这个dll放到unity用不了,因为mono不支持

    所以先用vs写个外部exe程序

    using System;
    using System.Management;
    
    public class Sample
    {
        public static void Main(string[] args)
        {
            string Gname = "";
    
            ManagementObjectSearcher objvide = new ManagementObjectSearcher("select * from Win32_VideoController");
    
            foreach (ManagementObject obj in objvide.Get())
            {
                Gname += ("Name - " + obj["Name"] + "</br>");
                //System.Console.WriteLine("Name - " + obj["Name"] + "</br>");
                //System.Console.WriteLine("DeviceID - " + obj["DeviceID"] + "</br>");
                //System.Console.WriteLine("AdapterRAM - " + obj["AdapterRAM"] + "</br>");
                //System.Console.WriteLine("AdapterDACType - " + obj["AdapterDACType"] + "</br>");
                //System.Console.WriteLine("Monochrome - " + obj["Monochrome"] + "</br>");
                //System.Console.WriteLine("InstalledDisplayDrivers - " + obj["InstalledDisplayDrivers"] + "</br>");
                //System.Console.WriteLine("DriverVersion - " + obj["DriverVersion"] + "</br>");
                //System.Console.WriteLine("VideoProcessor - " + obj["VideoProcessor"] + "</br>");
                //System.Console.WriteLine("VideoArchitecture - " + obj["VideoArchitecture"] + "</br>");
                //System.Console.WriteLine("VideoMemoryType - " + obj["VideoMemoryType"] + "</br>");
    
                //Console.WriteLine("=====================================================");
            }
    
    
            Console.WriteLine(Gname);
            Console.WriteLine("=====================================================");
            //Console.ReadKey();
        }
    }

    然后生成运行下

    Unity代码

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Diagnostics;
    using UnityEngine;
    
    public class GetSystemInfo : MonoBehaviour {
    
        string a = "";
    
        // Use this for initialization
        void Start () {
    
    
            //这种方法可以
            GetStr();
    
            //这种方法也可以
            //OpenEXE("C://Users/zts/source/repos/ConsoleApp9/ConsoleApp9/bin/Debug/ConsoleApp9.exe", "");
        }
    
        /// <summary>
        /// 
        /// </summary>
        /// <param name="_exePathName">路径</param>
        /// <param name="_exeArgus">启动参数</param>
        public void OpenEXE(string _exePathName, string _exeArgus)
        {
            try
            {
                Process myprocess = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo(_exePathName, _exeArgus);
                myprocess.StartInfo = startInfo;
                myprocess.StartInfo.CreateNoWindow = true;
                myprocess.StartInfo.UseShellExecute = false;
                myprocess.StartInfo.RedirectStandardOutput = true;
                //myprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                myprocess.Start();
                a += myprocess.StandardOutput.ReadLine();//只能读取1行
                UnityEngine.Debug.Log(a);
                myprocess.WaitForExit();
            }
            catch (Exception ex)
            {
                UnityEngine.Debug.Log("出错原因:" + ex.Message);
            }
        }
    
        public void GetStr()
        {
            try
            {
                Process proc = new Process();
                proc.EnableRaisingEvents = false;
                proc.StartInfo.FileName = "C://Users/zts/source/repos/ConsoleApp9/ConsoleApp9/bin/Debug/ConsoleApp9.exe";
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardOutput = true;
                //proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;//这句会让unity卡死
                proc.Start();
                string fingerprint = proc.StandardOutput.ReadLine();
                UnityEngine.Debug.Log(fingerprint);
                proc.WaitForExit();
            }
            catch (Exception)
            {
    
                throw;
            }
    
        }
    
        /********************************unity获取设备信息*******************************/
        string systemInfo;
        public void GetUnityInfo()
        {
            systemInfo = "	Title:当前系统基础信息:
    设备模型:" + SystemInfo.deviceModel + "
    设备名称:" + SystemInfo.deviceName + "
    设备类型:" + SystemInfo.deviceType +
                "
    设备唯一标识符:" + SystemInfo.deviceUniqueIdentifier + "
    显卡标识符:" + SystemInfo.graphicsDeviceID +
                "
    显卡设备名称:" + SystemInfo.graphicsDeviceName + "
    显卡厂商:" + SystemInfo.graphicsDeviceVendor +
                "
    显卡厂商ID:" + SystemInfo.graphicsDeviceVendorID + "
    显卡支持版本:" + SystemInfo.graphicsDeviceVersion +
                "
    显存(M):" + SystemInfo.graphicsMemorySize + "
    显卡像素填充率(百万像素/秒),-1未知填充率:" + SystemInfo.graphicsPixelFillrate +
                "
    显卡支持Shader层级:" + SystemInfo.graphicsShaderLevel + "
    支持最大图片尺寸:" + SystemInfo.maxTextureSize +
                "
    npotSupport:" + SystemInfo.npotSupport + "
    操作系统:" + SystemInfo.operatingSystem +
                "
    CPU处理核数:" + SystemInfo.processorCount + "
    CPU类型:" + SystemInfo.processorType +
                "
    supportedRenderTargetCount:" + SystemInfo.supportedRenderTargetCount + "
    supports3DTextures:" + SystemInfo.supports3DTextures +
                "
    supportsAccelerometer:" + SystemInfo.supportsAccelerometer + "
    supportsComputeShaders:" + SystemInfo.supportsComputeShaders +
                "
    supportsGyroscope:" + SystemInfo.supportsGyroscope + "
    supportsImageEffects:" + SystemInfo.supportsImageEffects +
                "
    supportsInstancing:" + SystemInfo.supportsInstancing + "
    supportsLocationService:" + SystemInfo.supportsLocationService +
                "
    supportsRenderTextures:" + SystemInfo.supportsRenderTextures + "
    supportsRenderToCubemap:" + SystemInfo.supportsRenderToCubemap +
                "
    supportsShadows:" + SystemInfo.supportsShadows + "
    supportsSparseTextures:" + SystemInfo.supportsSparseTextures +
                "
    supportsStencil:" + SystemInfo.supportsStencil + "
    supportsVertexPrograms:" + SystemInfo.supportsVertexPrograms +
                "
    supportsVibration:" + SystemInfo.supportsVibration + "
    内存大小:" + SystemInfo.systemMemorySize;
        }
        void OnGUI()
        {
            GUILayout.Label(systemInfo);
        }
        /************************************************************************/
    
        // Update is called once per frame
        void Update () {
            
        }
    }

    ===========

    改良下

        public void GetStr()
        {
            try
            {
                Process proc = new Process();
                proc.EnableRaisingEvents = false;
                proc.StartInfo.FileName = "C://Users/zts/source/repos/ConsoleApp9/ConsoleApp9/bin/Debug/ConsoleApp9.exe";
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardOutput = true;
                //proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;//这句会让unity卡死
                proc.Start();
                a += proc.StandardOutput.ReadToEnd();
                proc.WaitForExit();
                proc.Close();
                UnityEngine.Debug.Log(a);
            }
            catch (Exception)
            {
    
                throw;
            }
    
        }
  • 相关阅读:
    Job流程:Shuffle详解
    学Python Django学得很迷茫,怎么办?-转自知乎
    URL补充
    创建多对多以及增加示例
    Day20-初识Ajax
    笔记-自己看Day20-待续
    Day20-单表中获取表单数据的3种方式
    Day19内容回顾
    一点疑惑的解释
    python os.path模块常用方法详解
  • 原文地址:https://www.cnblogs.com/sanyejun/p/9051613.html
Copyright © 2011-2022 走看看