Normally, if we want to know about your system components performance like browser, cache, System the only option is to meet our System administrator. But, this application will help us to know about our system a lot.
This application displays System component's performance in web page. From that, we can get details of our system.
I created this application in VS.NET 2003 using C#.
First, create a Web application. Add 3 web pages to it. Finally, solution explorer will be like this:
Next go to WebForm1.aspx, write this code in body tag:
onload
Next write this JavaScript code as shown in below figure:
{ handle=window.open("WebForm2.aspx","handle","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,width= 500,height=260,left=510,top=450"); self.opener=this; self.close(); }

function loader()
Next go to WebForm2.aspx, place the controls as shown below:
Next add these items to "Available Categories" combobox:
-
Cache
-
System
-
Server
-
Memory
-
Browser
Next set AutoPostBack to true for both comboboxes.
By this application, we are going to get properties of above objects of our system.
Add this variable
public string selectedCategory;
Next go to Page_load event in webform2.aspx.cs:
selectedCategory="cache"; Button1.Attributes.Add("OnClick","showwindow()"); if(!IsPostBack) { System.Diagnostics.PerformanceCounter[] pc; System.Diagnostics.PerformanceCounterCategory cat = new System.Diagnostics.PerformanceCounterCategory("cache"); DropDownList2.Items.Clear(); pc = cat.GetCounters(); for (int i = 0 ; i <pc.Length ; i++) { DropDownList2.Items.Add(pc[i].CounterName); } } System.Diagnostics.PerformanceCounter[] pc; System.Diagnostics.PerformanceCounterCategory cat = new System.Diagnostics.PerformanceCounterCategory(DropDownList1.SelectedItem.Text.ToString()); DropDownList2.Items.Clear(); pc = cat.GetCounters(); for (int i = 0 ; i <pc.Length ; i++) { DropDownList2.Items.Add(pc[i].CounterName); } selectedCategory=DropDownList1.SelectedItem.Text.ToString(); System.Diagnostics.PerformanceCounter pc=new System.Diagnostics.PerformanceCounter(); pc.CategoryName =DropDownList1.SelectedItem.Text.ToString(); pc.CounterName =DropDownList2.SelectedItem.Text.ToString(); pc.MachineName ="."; pc.InstanceName =string.Empty; Label3.Text =DropDownList2.SelectedItem.Text.ToString()+":"+pc.NextValue().ToString(); <
function showwindow()
{
handle1=window.open("WebForm3.aspx?selectedcategory="+"","handle1","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,width=850,height=600");
}
</script>
Next go to WebFrom3.aspx and add a datagrid and format, set AllowPaging=true and PageSize=8 and go to events of DataGrid and select DataGrid1_PageIndexChanged and write this code:
DataGrid1.CurrentPageIndex =e.NewPageIndex;
to allow paging for DataGrid.
Next go to Page_Load event of WebForm3.aspx:
string category=Request.QueryString[0]; System.Diagnostics.PerformanceCounter[] pc; System.Diagnostics.PerformanceCounterCategory cat = new System.Diagnostics.PerformanceCounterCategory(category); pc = cat.GetCounters(); StreamWriter writer=File.CreateText("d:\\file2.xml"); writer.WriteLine("<?xml version='1.0'?>"); writer.Write("<"+category+">"); ListItemCollection col=new ListItemCollection(); for (int i = 0 ; i <pc.Length ; i++) { ListItem item=new ListItem(); item.Text =pc[i].CounterName.ToString(); item.Value =pc[i].CounterName.ToString(); col.Add(item); } for (int i = 0 ; i <pc.Length ; i++) { writer.Write("<subcategory>"); if(pc[i].CounterName.ToString().IndexOf("/")!=-1) { string countername=pc[i].CounterName.ToString().Replace("/"," per "); writer.Write("<name>"+countername+"</name>"); } else { writer.Write("<name>"+pc[i].CounterName.ToString()+"</name>"); } if(pc[i].CounterName == col.FindByText(pc[i].CounterName.ToString()).Text.ToString()) { System.Diagnostics.PerformanceCounter pc1=new System.Diagnostics.PerformanceCounter(); pc1.CategoryName=category; pc1.CounterName=pc[i].CounterName.ToString(); pc1.MachineName ="."; pc1.InstanceName =string.Empty; writer.Write("<value>"+pc[i].NextValue().ToString()+"</value>"); writer.Write("</subcategory>"); } } writer.Write("</"+category+">"); writer.Flush(); writer.Close(); DataSet ds=new DataSet(); ds.ReadXml("d:\\file2.xml"); DataGrid1.DataSource =ds.Tables[0]; DataGrid1.DataBind(); File.Delete("d:\\file2.xml");
I am just getting selected item using QueryString and storing its properties and values in a XML file and showing that contents in a grid.
Final, screen will be like this:
By using this code, even a ordinary person can know about his system properties. So, I think no need of System admin from now onwards, if we enhance this application. Just add required objects to Categories combobox and display its properties in Grid. If you have any doubts, just drag PerformanceCounter object from Components tab of toolbox and see CategoryName, CounterName, InstanceName properties....
I hope this code will be useful for all.

Krishnaraj LPosted Jul 3, 2006, 11:57 AM
Nice one. Appreciate your effort.