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
}