2010. 2. 2. 20:16


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Diagnostics;
using System.Management;
using System.Threading;

namespace Sauron
{
 public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();

   //while (true)
   //{
    InitForm();
   //    Thread.Sleep(1000);
   //}
  }


  Thread t;

  PerformanceCounter _memoryCounter = new PerformanceCounter();
  PerformanceCounter _cpuCounter = new PerformanceCounter();
  bool _compactFormat = true;

  private void InitForm()
  {
   

 

   Console.WriteLine(GetProcessorData());
   Console.WriteLine(GetMemoryPData());

 


   //
   // TODO: Add code to start application here
   //
   Console.WriteLine("Computer details retrieved using Windows Management Instrumentation (WMI)");
   Console.WriteLine("Written 01/17/02 By John O'Donnell - csharpconsulting@hotmail.com");
   Console.WriteLine("=========================================================================");

   ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
   ManagementObjectCollection queryCollection1 = query1.Get();
   foreach (ManagementObject mo in queryCollection1)
   {
    Console.WriteLine("Name : " + mo["name"].ToString());
    Console.WriteLine("Version : " + mo["version"].ToString());
    Console.WriteLine("Manufacturer : " + mo["Manufacturer"].ToString());
    Console.WriteLine("Computer Name : " + mo["csname"].ToString());
    Console.WriteLine("Windows Directory : " + mo["WindowsDirectory"].ToString());
   }

   query1 = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem");
   queryCollection1 = query1.Get();
   foreach (ManagementObject mo in queryCollection1)
   {
    Console.WriteLine("Manufacturer : " + mo["manufacturer"].ToString());
    Console.WriteLine("Model : " + mo["model"].ToString());
    Console.WriteLine(mo["systemtype"].ToString());
    Console.WriteLine("Total Physical Memory : " + mo["totalphysicalmemory"].ToString());
    
   }

   query1 = new ManagementObjectSearcher("SELECT * FROM Win32_processor");
   queryCollection1 = query1.Get();
   foreach (ManagementObject mo in queryCollection1)
   {
    Console.WriteLine(mo["caption"].ToString());
   }

   query1 = new ManagementObjectSearcher("SELECT * FROM Win32_bios");
   queryCollection1 = query1.Get();
   foreach (ManagementObject mo in queryCollection1)
   {
    Console.WriteLine(mo["version"].ToString());
   }

   object device, space, totalspace;
   ManagementObjectSearcher objCS = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
   foreach (ManagementObject objMgmt in objCS.Get())
   {
    device = objMgmt["DeviceID"];  // C:
    if (null != device)
    {
     space = objMgmt["FreeSpace"]; // C:10.32 GB, D:5.87GB
     totalspace = objMgmt["Size"]; // C:10.32 GB, D:5.87GB
     if (null != space)
     {
      //diskSpace += device.ToString() + " : " + space.ToString() + ", ";

      Console.WriteLine(device.ToString() + " : " + space.ToString() + " / " + totalspace.ToString());
     }
    }


   }

   //diskSpace = diskSpace.Substring(0, diskSpace.Length - 2);

 

   //query1 = new ManagementObjectSearcher("SELECT * FROM Win32_timezone");
   //queryCollection1 = query1.Get();
   //foreach (ManagementObject mo in queryCollection1)
   //{
   //    Console.WriteLine(mo["caption"].ToString());
   //}

 

   
  }

  public string GetProcessorData()
  {
   double d = GetCounterValue(_cpuCounter, "Processor", "% Processor Time", "_Total");
   return _compactFormat ? (int)d + "%" : d.ToString("F") + "%";
  }

  double GetCounterValue(PerformanceCounter pc, string categoryName, string counterName, string instanceName)
  {
   pc.CategoryName = categoryName;
   pc.CounterName = counterName;
   pc.InstanceName = instanceName;
   return pc.NextValue();
  }

  public string GetMemoryPData()
  {
   string s = QueryComputerSystem("totalphysicalmemory");
   double totalphysicalmemory = Convert.ToDouble(s);

   double d = GetCounterValue(_memoryCounter, "Memory", "Available Bytes", null);
   d = totalphysicalmemory - d;

   s = _compactFormat ? "%" : "% (" + FormatBytes(d) + " / " + FormatBytes(totalphysicalmemory) + ")";
   d /= totalphysicalmemory;
   d *= 100;
   return _compactFormat ? (int)d + s : d.ToString("F") + s;
  }

  enum Unit { B, KB, MB, GB, ER }
  public string FormatBytes(double bytes)
  {
   int unit = 0;
   while (bytes > 1024)
   {
    bytes /= 1024;
    ++unit;
   }

   string s = _compactFormat ? ((int)bytes).ToString() : bytes.ToString("F") + " ";
   return s + ((Unit)unit).ToString();
  }


  public string QueryComputerSystem(string type)
  {
   string str = null;
   ManagementObjectSearcher objCS = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem");
   foreach (ManagementObject objMgmt in objCS.Get())
   {
    str = objMgmt[type].ToString();
   }
   return str;
  }


  public string LogicalDisk()
  {
   string diskSpace = string.Empty;
   //object device, space;
   //ManagementObjectSearcher objCS = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
   //foreach (ManagementObject objMgmt in objCS.Get())
   //{
   //    device = objMgmt["DeviceID"];  // C:
   //    if (null != device)
   //    {
   //        space = objMgmt["FreeSpace"]; // C:10.32 GB, D:5.87GB
   //        if (null != space)
   //            diskSpace += device.ToString() + FormatBytes(double.Parse(space.ToString())) + ", ";
   //    }
   //}

   //diskSpace = diskSpace.Substring(0, diskSpace.Length - 2);
   return diskSpace;
  }
 }
}



Posted by 펀펀