using System;using System.DirectoryServices;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Diagnostics;using System.Management;using System.Runtime.InteropServices;namespace Printer_Tool{  public partial class Form1 : Form  {    bool rePaint = true;    public Form1()    {      InitializeComponent();    }    private void button1_Click(object sender, EventArgs e)    {      string filter = "(objectCategory=printQueue)";      if (textBox1.Text != "" || textBox2.Text != "" || textBox3.Text != "")      {        filter = "(&"  filter ;        if (textBox1.Text != "")          filter = "(printername=*"  textBox1.Text  "*)";        if (textBox2.Text != "")          filter = "(location=*"  textBox2.Text  "*)";        if (textBox3.Text != "")          filter = "(drivername=*"  textBox3.Text  "*)";        filter = ")";      }      DataSet dataSet = new DataSet();      DirectoryEntry entry = new DirectoryEntry("LDAP://apa.gad.schneider-electric.com/OU=Servers,OU=CN,OU=Countries,DC=apa,DC=gad,DC=schneider-electric,DC=com");      using (entry)      {        using (DirectorySearcher search = new DirectorySearcher(entry, filter, new string[] { "printername", "location", "drivername", "description", "servername", "printsharename" }))        {          search.PageSize = 1000;          string[] columns = { "PrinterName", "PrinterLocation", "Model", "Description", "ServerName", "PrintShareName" };          DataTable dataTable = dataSet.Tables.Add("Printers");          DataRow dataRow;          foreach (string colName in columns)          {            dataTable.Columns.Add(colName);          }          using (SearchResultCollection resultCollection = search.FindAll()) {            toolStripStatusLabel1.Text = string.Format("{0} item(s) found.", resultCollection.Count);            foreach (SearchResult result in resultCollection) {              dataRow = dataTable.NewRow();             foreach (string column in result.Properties.PropertyNames)              { switch (column) {    case "printername":     dataRow[0] = result.Properties[column][0];     break;   case "location":     dataRow[1] = result.Properties[column][0];     break;   case "drivername":     dataRow[2] = result.Properties[column][0];     break;   case "description":     dataRow[3] = result.Properties[column][0];     break;   case "servername":     dataRow[4] = result.Properties[column][0];     break;    case "printsharename":     dataRow[5] = result.Properties[column][0];     break; }  }              dataTable.Rows.Add(dataRow);            }          }        }      }      dataGridView1.DataSource = dataSet.Tables["Printers"];    }    private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)    {      if (e.Button == MouseButtons.Right)      {        if (e.RowIndex >= 0)        {          if (dataGridView1.Rows[e.RowIndex].Selected == false)          {            dataGridView1.ClearSelection();            dataGridView1.Rows[e.RowIndex].Selected = true;          }          if (dataGridView1.SelectedRows.Count == 1)          {            dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];          }          contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);        }      }    }    private void toolStripMenuItem1_Click(object sender, EventArgs e)    {      string cmdText = string.Format("explorer \"\\\\{0}\\{1}", dataGridView1.SelectedCells[5].Value.ToString(), dataGridView1.SelectedCells[6].Value.ToString()  "\"");      Process process = new Process();      process.StartInfo.FileName = "cmd.exe";      process.StartInfo.UseShellExecute = false;      process.StartInfo.RedirectStandardInput = true;      process.StartInfo.RedirectStandardOutput = true;      process.StartInfo.RedirectStandardError = true;      process.StartInfo.CreateNoWindow = true;      process.Start();      process.StandardInput.WriteLine(cmdText  "&exit");      process.StandardInput.AutoFlush = true;      string result = process.StandardOutput.ReadToEnd();      process.Close();      MessageBox.Show(result);    }    private void Form1_FormClosing(object sender, FormClosingEventArgs e)    {      if (MessageBox.Show("Are you sure want to exit the application ?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)      {        e.Cancel = false;      }      else        e.Cancel = true;    }    private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)    {      if (dataGridView1.HorizontalScrollingOffset==0)      {        Image icon = Properties.Resources.printer;        e.Graphics.DrawImage(icon, e.RowBounds.Left  2, e.RowBounds.Top  3, 16, 16);      }    }    private void dataGridView1_Scroll(object sender, ScrollEventArgs e)    {      if (dataGridView1.HorizontalScrollingOffset <= 20)        dataGridView1.HorizontalScrollingOffset = 0;    }  }    }

 
评论