0,0 → 1,142 |
using System; |
using System.Collections.Generic; |
using System.ComponentModel; |
using System.Data; |
using System.Drawing; |
using System.Linq; |
using System.Text; |
using System.Windows.Forms; |
using System.IO; |
using Dolinay; // Imported class for drive insertion event handling |
|
namespace DriveLogger |
{ |
public struct DriveEntry |
{ |
/// <summary> |
/// Struct for storing the info on each drive that is inserted |
/// </summary> |
|
public DateTime time; |
public string status; |
public string drive; |
public string label; |
public string owner; |
public string size; |
} |
public partial class MainForm : Form |
{ |
private static List<DriveEntry> driveList = new List<DriveEntry>(); |
|
public MainForm() |
{ |
// Clears the list of DriveEntry structs |
driveList.Clear(); |
InitializeComponent(); |
DriveDetector driveDetector = new DriveDetector(); |
driveDetector.DeviceArrived += new DriveDetectorEventHandler(driveDetector_DeviceArrived); |
driveDetector.DeviceRemoved += new DriveDetectorEventHandler(driveDetector_DeviceRemoved); |
|
this.KeyPreview = true; |
this.KeyPress += new KeyPressEventHandler(MainForm_KeyPress); |
|
// Adds columns to the listview in the form |
//this.listView_Drives.Columns.Add("Event", 60, HorizontalAlignment.Center); |
this.listView_Drives.Columns.Add("Time", 125, HorizontalAlignment.Center); |
this.listView_Drives.Columns.Add("Drive", 40, HorizontalAlignment.Center); |
this.listView_Drives.Columns.Add("Label", 109, HorizontalAlignment.Center); |
this.listView_Drives.Columns.Add("Size", 60, HorizontalAlignment.Center); |
//this.listView_Drives.Columns.Add("Owner", 95, HorizontalAlignment.Center); |
|
paintDriveListbox(); |
} |
|
void MainForm_KeyPress(object sender, KeyPressEventArgs e) |
{ |
switch (e.KeyChar) |
{ |
case '?': |
AboutBox window = new AboutBox(); |
window.ShowDialog(); |
break; |
} |
} |
private void paintDriveListbox() |
{ |
this.listView_Drives.BeginUpdate(); |
|
this.listView_Drives.Items.Clear(); |
|
// Adds each entry from the driveList into the listView |
foreach (DriveEntry entry in driveList) |
{ |
ListViewItem item = new ListViewItem(); |
//item.Text = entry.status; |
item.Text = entry.time.ToString(); |
//ListViewItem.ListViewSubItem subTime = new ListViewItem.ListViewSubItem(); |
//subTime.Text = entry.time.ToString(); |
//item.SubItems.Add(subTime); |
ListViewItem.ListViewSubItem subDrive = new ListViewItem.ListViewSubItem(); |
subDrive.Text = entry.drive; |
item.SubItems.Add(subDrive); |
ListViewItem.ListViewSubItem subLabel = new ListViewItem.ListViewSubItem(); |
subLabel.Text = entry.label; |
item.SubItems.Add(subLabel); |
ListViewItem.ListViewSubItem subSize = new ListViewItem.ListViewSubItem(); |
subSize.Text = entry.size; |
item.SubItems.Add(subSize); |
ListViewItem.ListViewSubItem subOwner = new ListViewItem.ListViewSubItem(); |
subOwner.Text = entry.owner; |
item.SubItems.Add(subOwner); |
|
this.listView_Drives.Items.Add(item); |
} |
|
this.listView_Drives.EndUpdate(); |
} |
void driveDetector_DeviceArrived(object sender, DriveDetectorEventArgs e) |
{ |
e.HookQueryRemove = true; |
|
DriveEntry newEntry = new DriveEntry(); |
newEntry.status = "Inserted"; |
newEntry.time = DateTime.Now; |
newEntry.drive = e.Drive; |
|
DriveInfo tempDrive = null; |
DriveInfo[] allDrives = DriveInfo.GetDrives(); |
foreach (DriveInfo drive in allDrives) |
{ |
if (drive.IsReady) |
{ |
if (drive.Name == newEntry.drive) |
{ |
tempDrive = drive; |
break; |
} |
} |
} |
newEntry.label = tempDrive.VolumeLabel; |
newEntry.size = (tempDrive.TotalSize / 1073741824).ToString() + " GB"; |
newEntry.owner = ""; |
driveList.Add(newEntry); |
|
paintDriveListbox(); |
} |
void driveDetector_DeviceRemoved(object sender, DriveDetectorEventArgs e) |
{ |
DriveEntry entryToRemove = new DriveEntry(); |
foreach (DriveEntry entry in driveList) |
{ |
if (e.Drive == entry.drive) |
{ |
entryToRemove = entry; |
break; |
} |
} |
driveList.Remove(entryToRemove); |
|
paintDriveListbox(); |
} |
} |
} |