気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
どのような方法がございますでしょうか。
dxdiagはコマンドラインオプションに/t
や/x
を指定することで情報をファイルに出力することができるので、
![説明]
その出力したファイルから欲しい情報を取り出して出力することも簡単な方法のひとつです。/t
オプションで出力されたファイルは例えば以下のような内容になります。
PlainText
1------------------ 2System Information 3------------------ 4 Time of this report: 10/5/2021, 09:11:51 5...省略 6 7Microsoft Graphics Hybrid: Not Supported 8 DirectX Database Version: 1.0.8 9 DxDiag Version: 10.00.19041.0928 64bit Unicode 10 11------------ 12DxDiag Notes 13------------ 14 Display Tab 1: No problems found. 15 Display Tab 2: No problems found. 16 Sound Tab 1: No problems found. 17 Sound Tab 2: No problems found. 18 Sound Tab 3: No problems found. 19 Input Tab: No problems found. 20 21--------------- 22Display Devices 23--------------- 24 Card name: AMD Radeon XX XXXXX 25 Manufacturer: Advanced Micro Devices, Inc. 26...省略 27 Display Memory: 10156 MB 28 Dedicated Memory: 2026 MB 29 Shared Memory: 8130 MB 30...
ここで、該当の情報「表示メモリ」は「Dedicated Memory: 2026 MB」の行に相当します。これを出力したテキストファイルから取り出せば良いです。以下、簡単なサンプルです。
C#
1using System; 2 3namespace ConsoleApp2 4{ 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 System.Diagnostics.Process process = new System.Diagnostics.Process(); 10 process.StartInfo.FileName = "dxdiag"; 11 process.StartInfo.Arguments = @"/t C:\_work\result.txt"; 12 process.StartInfo.UseShellExecute = false; 13 process.StartInfo.RedirectStandardOutput = false; 14 15 process.Start(); 16 process.WaitForExit(); 17 18 string[] lines = System.IO.File.ReadAllLines(@"C:\_work\result.txt"); 19 foreach (var line in lines) 20 { 21 if (line.Contains("Dedicated Memory:")) 22 { 23 // 必要なら行データを加工して出力 24 Console.WriteLine(line); 25 break; 26 } 27 } 28 } 29 } 30}
このプログラムを実行すると端末に「Dedicated Memory: 2026 MB」と出力します。キーワードとして利用する"Dedicated Memory:"
はファイル中に何度も出現する場合があるので、ファイルの内容を良く理解してから使ってみてください。
投稿2021/10/05 00:41
総合スコア9256
0
ベストアンサー
これでどうでしょう。
System.Management アセンブリ参照の追加、またはNugetからのインストールが必要です。
cs
1using (var searcher = new ManagementObjectSearcher( 2 "select * from Win32_VideoController")) 3{ 4 foreach (var obj in searcher.Get()) 5 { 6 Console.WriteLine($"AdapterRAM : {obj["AdapterRAM"]}"); 7 } 8}
[2021/10/8 追記]
DXGIを使用して情報を取得する事が出来るようなので、Vortice.DXGIで実験。
.NET5.0のサンプルソースです。
cs
1using System; 2using Vortice.DXGI; 3 4if (DXGI.CreateDXGIFactory1(out IDXGIFactory1 factory).Failure) 5{ 6 return; 7} 8 9using (factory) 10{ 11 for (int iAdapter = 0; ; iAdapter++) 12 { 13 if (factory.EnumAdapters(iAdapter, out IDXGIAdapter adapter).Failure) 14 { 15 break; 16 } 17 18 using (adapter) 19 { 20 if (adapter.Description.DedicatedVideoMemory == 0) 21 { 22 continue; 23 } 24 25 Console.WriteLine($"[adapter {iAdapter}]"); 26 Console.WriteLine($"Description:{adapter.Description.Description}"); 27 Console.WriteLine($"DedicatedVideoMemory:{adapter.Description.DedicatedVideoMemory / 1024 / 1024} MB"); 28 } 29 } 30}
(実行結果)
[adapter 0]
Description:NVIDIA GeForce GTX 1050 Ti
DedicatedVideoMemory:4018 MB
DxDiagの結果と一致します。
投稿2021/10/05 01:03
編集2021/10/07 17:53退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/10/05 01:12
2021/10/05 01:18
2021/10/05 01:19
2021/10/05 01:37
退会済みユーザー
2021/10/05 05:09 編集
0
Direct3D 12 プログラミング ガイド - Win32 apps | Microsoft Docs
directx でぐぐると引っかかります。
これらのDLLをC#で呼び出す形になります
#「C# directx」でぐぐってみよう
投稿2021/10/04 23:30
総合スコア88042
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/05 00:04
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/05 00:47
2021/10/05 01:08
2021/10/05 01:15
2021/10/05 01:26