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 () { } }
===========
改良下
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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~