using System.Runtime.InteropServices;
/// <summary>
/// 界面相关基础处理,获取插入或拔出的移动磁盘以及对应磁盘的卷标,剩余空间大小,磁盘是否为数据卡
/// </summary>
public class BaseClass
{
/// <summary>
/// 插入或拔出前磁盘列表
/// </summary>
private static List<string> strDrivers = new List<string>();
public BaseClass( )
{
string[] temp = Environment.GetLogicalDrives();
for (int i = 0; i < temp.Length; i++)
if (!strDrivers.Contains(temp[i]))
strDrivers.Add(temp[i]);
}
#region 得到变化盘符
/// <summary>
/// 得到变化的磁盘盘符
/// </summary>
/// <returns></returns>
public string drivers()
{
List<String> temps = new List<string>();
String[] strDriver0 = Environment.GetLogicalDrives();//当前所有盘符
string pan = "";
if (strDrivers.Count > strDriver0.Length)//磁盘数减少了表示有拔出
{
foreach (string i in strDrivers)
{
bool E2 = false;
if (null != i)
for (int j = 0; j < strDriver0.Length; j++)
{
if (i == strDriver0[j])
{
E2 = true;
temps.Add(i);
}
}
if (!E2) pan = i;
}
strDrivers = temps;
}
else if (strDrivers.Count < strDriver0.Length)//磁盘数增加了表示有插入
{
for (int i = 0; i < strDriver0.Length; i++)
{
bool E2 = false;
if (null != strDriver0[i])
foreach (string j in strDrivers)
if (strDriver0[i] == j) E2 = true;
if (!E2) pan = strDriver0[i];
}
strDrivers.Add(pan);
}
return pan;
}
/// <summary>
/// 根据盘符得到卷标
/// </summary>
/// <param name="panfu">查找卷标的盘符</param>
/// <returns>卷标</returns>
public string Pan_name(string panfu)
{
string temp = "";
try
{
DriveInfo[] dis = DriveInfo.GetDrives();
foreach (DriveInfo di in dis)
{
if (di.Name == panfu)
temp = di.VolumeLabel;
}
if (temp.Length == 0)
temp = "没有卡名";
}
catch (Exception ex)
{
temp = ex.Message.Trim();
}
return temp;
}
/// <summary>
/// 获取磁盘剩余空间
/// </summary>
/// <param name="panfu">验证的磁盘</param>
/// <returns>剩余空间大小</returns>
public long DaXiao(string panfu)
{
long temp = 0;
try
{
foreach (DriveInfo di in DriveInfo.GetDrives())
{
if (di.Name == panfu)
temp = di.TotalFreeSpace;
}
}
catch { }
return temp;
}
#endregion
#region 可移动磁盘
[DllImport("kernel32")]
public static extern int GetDriveType(string drive);
/// <summary>
/// 可移动磁盘
/// </summary>
public List<String> RemoveDisk()
{
List<String> temps = new List<string>();
try
{
String[] strDriver0 = Environment.GetLogicalDrives();//当前所有盘符
for (int i = 0; i < strDriver0.Length; i++)
{
if ((strDriver0[i] != "A:\\")&&(strDriver0[i] != "B:\\"))
if (GetDriveType(strDriver0[i]) == 2)
{
temps.Add(strDriver0[i]);
}
}
Thread.Sleep(100);
}
catch { }
return temps;
}
#endregion
}