OperatingSystem os = System.Environment.OSVersion; Console.WriteLine(“Platform: {0}”, os.Platform); Console.WriteLine(“Service Pack: {0}”, os.ServicePack); Console.WriteLine(“Version: {0}”, os.Version); Console.WriteLine(“VersionString: {0}”, os.VersionString); Console.WriteLine(“CLR Version: {0}”, System.Environment.Version);
私のWindows 7システムでは、次の情報が出力されます
プラットフォーム: Win32NT
サービスパック:
バージョン: 6.1.7600.0
バージョン文字列: Microsoft Windows NT 6.1.7600.0
CLR バージョン: 4.0.21006.1
必要な情報は、Windows Management Instrumentation (WMI) が提供するインターフェイスを通じて読み取ることができます。
りーコードが正しくコンパイルできることを確認するには、アセンブリ System.Management への参照を追加してください。
りーprivate static UInt32 CountPhysicalProcessors() { ManagementObjectSearcher objects = new ManagementObjectSearcher( “SELECT * FROM Win32_ComputerSystem”); ManagementObjectCollection coll = objects.Get(); foreach(ManagementObject obj in coll) { return (UInt32)obj[“NumberOfProcessors”]; } return 0; } private static UInt64 CountPhysicalMemory() { ManagementObjectSearcher objects =new ManagementObjectSearcher( “SELECT * FROM Win32_PhysicalMemory”); ManagementObjectCollection coll = objects.Get(); UInt64 total = 0; foreach (ManagementObject obj in coll) { total += (UInt64)obj[“Capacity”]; } return total; }
上記のコードを確実にコンパイルできるように、名前空間 Microsoft.Win32 を追加してください。
この API によって提供される実用的な機能は、コントロール パネルの管理サービスに移動することなく、アプリケーション内のサービスを管理するためによく使用されます。
りー.net が提供する API では、インストールとアンインストールのサービスを一文で実装できます
Console.WriteLine(“Machine: {0}”, Environment.MachineName); Console.WriteLine(“# of processors (logical): {0}”, Environment.ProcessorCount); Console.WriteLine(“# of processors (physical): {0}” CountPhysicalProcessors()); Console.WriteLine(“RAM installed: {0:N0} bytes”, CountPhysicalMemory()); Console.WriteLine(“Is OS 64-bit? {0}”, Environment.Is64BitOperatingSystem); Console.WriteLine(“Is process 64-bit? {0}”, Environment.Is64BitProcess); Console.WriteLine(“Little-endian: {0}”, BitConverter.IsLittleEndian); foreach (Screen screen in System.Windows.Forms.Screen.AllScreens) { Console.WriteLine(“Screen {0}”, screen.DeviceName); Console.WriteLine(“\tPrimary {0}”, screen.Primary); Console.WriteLine(“\tBounds: {0}”, screen.Bounds); Console.WriteLine(“\tWorking Area: {0}”,screen.WorkingArea); Console.WriteLine(“\tBitsPerPixel: {0}”,screen.BitsPerPixel); }
コードに示されているように、i または u パラメーターをアプリケーションに渡して、プログラムをアンインストールするかインストールするかを示します。
たとえば、プログラムでアセンブリが署名されているかどうかを確認するには、次のメソッドを呼び出すことができます
using (RegistryKey keyRun = Registry.LocalMachine.OpenSubKey(@”Software\Microsoft\Windows\CurrentVersion\Run”)) { foreach (string valueName in keyRun.GetValueNames()) { Console.WriteLine(“Name: {0}\tValue: {1}”, valueName, keyRun.GetValue(valueName)); } }
この関数はソフトウェア保護方法で一般的に使用され、署名されたコンポーネントを検証するために使用できます。署名が削除された場合、またはすべてのアセンブリの署名が削除された場合でも、プログラム内にこの呼び出しコードが存在する限り、プログラムの実行を停止できます。
たとえば、システムをロックした後、QQ が終了しない場合、ビジー状態が表示されます。
名前空間 Microsoft.Win32 を追加して、次のイベントを登録してください。
. DisplaySettingsChanged (変更を含む) ディスプレイ設定
.InstalledFontsChanged フォントの変更
.パレット変更されました
. PowerMode 電源ステータスが変更されました
.SessionEnded (ユーザーがログアウトしているか、セッションが終了しています)
.SessionSwitch (現在のユーザーを変更)
.TimeChanged 時間が変わりました
UserPreferenceChanged (ユーザー設定番号には変更が含まれます)
当社の ERP システムは、システム時刻が変更されたかどうかを監視します。時刻が ERP ライセンス ファイルの範囲外に調整された場合、ERP ソフトウェアは使用できなくなります。
Windows 7 システムには、[ファイルを開く] ダイアログ ボックスなどのいくつかの新機能が導入されており、ステータス バーに現在のタスクの進行状況を表示できます。
りーこのメソッドを使用してダイアログ ボックスを開くには、BCL 独自のクラス ライブラリの OpenFileDialog よりも多くの機能があります。ただし、これは Windows 7 システムに限定されているため、このコードを呼び出すには、オペレーティング システムのバージョンが 6 より大きいことも確認し、Microsoft®.NET Framework のアセンブリ Windows API コード パックへの参照を追加する必要があります。ダウンロードするにはこのアドレスにアクセスしてください //m.sbmmt.com/
次の方法を使用して、.NET によってプログラムに割り当てられたメモリの量を確認します
<p style="margin-bottom: 7px;">ServiceController controller = new ServiceController(“e-M-POWER”); <br/>controller.Start(); <br/>if (controller.CanPauseAndContinue) <br/>{ <br/> controller.Pause(); <br/> controller.Continue(); <br/>} <br/>controller.Stop();<br/></p>
私のシステムでは、実行結果は次のようになります
if (args[0] == "/i") { ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location }); } else if (args[0] == "/u") { ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); }
現在のアプリケーションが占有しているメモリを確認するには、次の方法を使用します
[DllImport("mscoree.dll", CharSet=CharSet.Unicode)] static extern bool StrongNameSignatureVerificationEx(string wszFilePath, bool fForceVerification, ref bool pfWasVerified); bool notForced = false; bool verified = StrongNameSignatureVerificationEx(assembly, false, ref notForced); Console.WriteLine("Verified: {0}\nForced: {1}", verified, !notForced);
Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog ofd = new Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog(); ofd.AddToMostRecentlyUsedList = true; ofd.IsFolderPicker = true; ofd.AllowNonFileSystemItems = true; ofd.ShowDialog();
一部のコードが非常に時間がかかるのではないかと心配な場合は、以下のコードに示すように、StopWatch を使用してこのコードにかかる時間を確認できます
long available = GC.GetTotalMemory(false); Console.WriteLine(“Before allocations: {0:N0}”, available); int allocSize = 40000000; byte[] bigArray = new byte[allocSize]; available = GC.GetTotalMemory(false); Console.WriteLine(“After allocations: {0:N0}”, available);
現在では、dotNetPerformance ソフトウェアなど、プログラムの実行時間を検出するための特別なツールがあり、それぞれの方法に合わせて調整できます。
上記のコードを例に挙げると、ソース コードを直接変更する必要がありますが、プログラムのテストに使用する場合は多少不便です。以下の例を参照してください。
りー次のコードに示すように、構文を使用すると、コードの実行時間をチェックし、コンソールに出力できます。
りープログラムがバックグラウンドで保存または削除操作を実行しているときは、カーソルのステータスをビジーに変更する必要があります。次のヒントを使用してください。
りー使い方は以下の通りです
Before allocations: 651,064 After allocations: 40,690,080
プログラムが例外をスローする可能性があることを想定した書き方です。 コードにあるように、例外がスローされてもカーソルを前の状態に戻すことができます。
以上がC# プログラマーが頻繁に使用する 10 個の実用的なコード スニペットの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。