unity 读取外部exe程序控制台信息
Posted 三页菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = "\tTitle:当前系统基础信息:\n设备模型:" + SystemInfo.deviceModel + "\n设备名称:" + SystemInfo.deviceName + "\n设备类型:" + SystemInfo.deviceType + "\n设备唯一标识符:" + SystemInfo.deviceUniqueIdentifier + "\n显卡标识符:" + SystemInfo.graphicsDeviceID + "\n显卡设备名称:" + SystemInfo.graphicsDeviceName + "\n显卡厂商:" + SystemInfo.graphicsDeviceVendor + "\n显卡厂商ID:" + SystemInfo.graphicsDeviceVendorID + "\n显卡支持版本:" + SystemInfo.graphicsDeviceVersion + "\n显存(M):" + SystemInfo.graphicsMemorySize + "\n显卡像素填充率(百万像素/秒),-1未知填充率:" + SystemInfo.graphicsPixelFillrate + "\n显卡支持Shader层级:" + SystemInfo.graphicsShaderLevel + "\n支持最大图片尺寸:" + SystemInfo.maxTextureSize + "\nnpotSupport:" + SystemInfo.npotSupport + "\n操作系统:" + SystemInfo.operatingSystem + "\nCPU处理核数:" + SystemInfo.processorCount + "\nCPU类型:" + SystemInfo.processorType + "\nsupportedRenderTargetCount:" + SystemInfo.supportedRenderTargetCount + "\nsupports3DTextures:" + SystemInfo.supports3DTextures + "\nsupportsAccelerometer:" + SystemInfo.supportsAccelerometer + "\nsupportsComputeShaders:" + SystemInfo.supportsComputeShaders + "\nsupportsGyroscope:" + SystemInfo.supportsGyroscope + "\nsupportsImageEffects:" + SystemInfo.supportsImageEffects + "\nsupportsInstancing:" + SystemInfo.supportsInstancing + "\nsupportsLocationService:" + SystemInfo.supportsLocationService + "\nsupportsRenderTextures:" + SystemInfo.supportsRenderTextures + "\nsupportsRenderToCubemap:" + SystemInfo.supportsRenderToCubemap + "\nsupportsShadows:" + SystemInfo.supportsShadows + "\nsupportsSparseTextures:" + SystemInfo.supportsSparseTextures + "\nsupportsStencil:" + SystemInfo.supportsStencil + "\nsupportsVertexPrograms:" + SystemInfo.supportsVertexPrograms + "\nsupportsVibration:" + SystemInfo.supportsVibration + "\n内存大小:" + SystemInfo.systemMemorySize; } void OnGUI() { GUILayout.Label(systemInfo); } /************************************************************************/ // Update is called once per frame void Update () { } }
缺陷:这种读取只能读取控制台的1行数据,当然你可以把数据集中起来,一行输出
不知道有没有其他办法可以获取多行控制台信息
以上是关于unity 读取外部exe程序控制台信息的主要内容,如果未能解决你的问题,请参考以下文章