小功能代码二
一、格式化磁盘
[DllImport("shell32.dll")]
private static extern int SHFormatDrive(IntPtr hWnd, int drive, long fmtID, int Options);
public const long SHFMT_ID_DEFAULT = 0xFFFF;
private void button1_Click(object sender, EventArgs e)
{
try
{
//调用API函数SHFormatDrive执行格式化磁盘操作
SHFormatDrive(this.Handle, comboBox1.SelectedIndex, SHFMT_ID_DEFAULT, 0);
MessageBox.Show("格式化完成", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("格式化失败", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
public const long SHFMT_ID_DEFAULT = 0xFFFF;
private void button1_Click(object sender, EventArgs e)
{
try
{
//调用API函数SHFormatDrive执行格式化磁盘操作
SHFormatDrive(this.Handle, comboBox1.SelectedIndex, SHFMT_ID_DEFAULT, 0);
MessageBox.Show("格式化完成", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("格式化失败", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
二、设置打印机:ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");//查找打印设备
ManagementObjectCollection queryCollection = query.Get();//获取查找到的打印设备
foreach (ManagementObject mo in queryCollection)//遍历查找到的打印设备
{
if (string.Compare(mo["Name"].ToString(), "PrinterName", true) == 0)//判断默认的打印设备是否为PrinterName
{
mo.InvokeMethod("SetDefaultPrinter", null);//设置默认打印设备
break;
}
}
foreach (ManagementObject mo in queryCollection)//遍历查找到的打印设备
{
if (string.Compare(mo["Name"].ToString(), "PrinterName", true) == 0)//判断默认的打印设备是否为PrinterName
{
mo.InvokeMethod("SetDefaultPrinter", null);//设置默认打印设备
break;
}
}
三、设置桌面背景:string P_str_Path = textBox1.Text;//记录图片路径
RegistryKey myRKey = Registry.CurrentUser;//获取册注表中的基表
myRKey = myRKey.OpenSubKey("Control Panel\\Desktop", true);//检索指定的子项
//通过调用RegistryKey对象的SetValue方法设置桌面背景
myRKey.SetValue("WallPaper", P_str_Path);
myRKey.SetValue("TitleWallPaper", "2");
myRKey.Close();//关闭注册表
MessageBox.Show("桌面背景已经更改,请重新启动计算机!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
myRKey = myRKey.OpenSubKey("Control Panel\\Desktop", true);//检索指定的子项
//通过调用RegistryKey对象的SetValue方法设置桌面背景
myRKey.SetValue("WallPaper", P_str_Path);
myRKey.SetValue("TitleWallPaper", "2");
myRKey.Close();//关闭注册表
MessageBox.Show("桌面背景已经更改,请重新启动计算机!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
四、修改计算机名:[DllImport("kernel32.dll")]
private static extern int SetComputerName(string ipComputerName);//重写API函数
private void Frm_Main_Load(object sender, EventArgs e)
{
Computer computer = new Computer();//创建计算机对象
textBox1.Text = computer.Name;//显示计算机名称
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox2.Text == "")//判断计算机名称是否为空
{
MessageBox.Show("计算机名称不能为空!");
}
else
{
SetComputerName(textBox2.Text);//修改计算机名称
MessageBox.Show("计算机名称修改成功,请重新启动计算机使之生效!");
}
}
private void Frm_Main_Load(object sender, EventArgs e)
{
Computer computer = new Computer();//创建计算机对象
textBox1.Text = computer.Name;//显示计算机名称
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox2.Text == "")//判断计算机名称是否为空
{
MessageBox.Show("计算机名称不能为空!");
}
else
{
SetComputerName(textBox2.Text);//修改计算机名称
MessageBox.Show("计算机名称修改成功,请重新启动计算机使之生效!");
}
}
五、安装键盘钩子: private IntPtr pKeyboardHook = IntPtr.Zero;//键盘钩子句柄
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);// 钩子委托声明
//键盘钩子委托实例不能省略变量
private HookProc KeyboardHookProcedure;
//底层键盘钩子
public const int idHook = 13;
//安装钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn,
IntPtr pInstance, int threadId);
//卸载钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle);
//键盘钩子处理函数
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
if (pKeyboardHook != IntPtr.Zero)
{
switch (((Keys)m.vkCode))
{
case Keys.LWin:
case Keys.RWin:
case Keys.Delete:
case Keys.Alt:
case Keys.Escape:
case Keys.F4:
case Keys.Control:
case Keys.Tab:
return 1;
}
}
return 0;
}
//安装钩子
public bool InsertHook()
{
IntPtr pIn = (IntPtr)4194304;
if (this.pKeyboardHook == IntPtr.Zero)//如果没安装钩子
{
this.KeyboardHookProcedure = new HookProc(KeyboardHookProc);
//安装钩子
this.pKeyboardHook = SetWindowsHookEx(idHook, KeyboardHookProcedure, pIn, 0);
if (this.pKeyboardHook == IntPtr.Zero)//如果安装钩子失败
{
this.UnInsertHook();//卸载钩子
return false;//返回false
}
}
return true;
}
//卸载钩子
public bool UnInsertHook()
{
bool result = true;
if (this.pKeyboardHook != IntPtr.Zero)//如果存在键盘钩子
{
result = (UnhookWindowsHookEx(this.pKeyboardHook) && result);//卸载钩子
this.pKeyboardHook = IntPtr.Zero;
}
return result;
}
[StructLayout(LayoutKind.Sequential)]
public struct KeyMSG
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
//键盘钩子委托实例不能省略变量
private HookProc KeyboardHookProcedure;
//底层键盘钩子
public const int idHook = 13;
//安装钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn,
IntPtr pInstance, int threadId);
//卸载钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle);
//键盘钩子处理函数
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
if (pKeyboardHook != IntPtr.Zero)
{
switch (((Keys)m.vkCode))
{
case Keys.LWin:
case Keys.RWin:
case Keys.Delete:
case Keys.Alt:
case Keys.Escape:
case Keys.F4:
case Keys.Control:
case Keys.Tab:
return 1;
}
}
return 0;
}
//安装钩子
public bool InsertHook()
{
IntPtr pIn = (IntPtr)4194304;
if (this.pKeyboardHook == IntPtr.Zero)//如果没安装钩子
{
this.KeyboardHookProcedure = new HookProc(KeyboardHookProc);
//安装钩子
this.pKeyboardHook = SetWindowsHookEx(idHook, KeyboardHookProcedure, pIn, 0);
if (this.pKeyboardHook == IntPtr.Zero)//如果安装钩子失败
{
this.UnInsertHook();//卸载钩子
return false;//返回false
}
}
return true;
}
//卸载钩子
public bool UnInsertHook()
{
bool result = true;
if (this.pKeyboardHook != IntPtr.Zero)//如果存在键盘钩子
{
result = (UnhookWindowsHookEx(this.pKeyboardHook) && result);//卸载钩子
this.pKeyboardHook = IntPtr.Zero;
}
return result;
}
[StructLayout(LayoutKind.Sequential)]
public struct KeyMSG
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
六、获取内存使用情况: Microsoft.VisualBasic.Devices.Computer myInfo = new Microsoft.VisualBasic.Devices.Computer();
//获取物理内存总量
pbMemorySum.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory/1024/1024);
pbMemorySum.Value = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024);
lblSum.Text = (myInfo.Info.TotalPhysicalMemory / 1024).ToString();
//获取可用物理内存总量
pbMemoryUse.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024);
pbMemoryUse.Value = Convert.ToInt32(myInfo.Info.AvailablePhysicalMemory / 1024 / 1024);
lblMuse.Text = (myInfo.Info.AvailablePhysicalMemory / 1024).ToString();
//获取虚拟内存总量
pbVmemorysum.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
pbVmemorysum.Value = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
lblVinfo.Text = (myInfo.Info.TotalVirtualMemory / 1024).ToString();
//获取可用虚拟内存总量
pbVmemoryuse.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
pbVmemoryuse.Value = Convert.ToInt32(myInfo.Info.AvailableVirtualMemory/ 1024 / 1024);
pbMemorySum.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory/1024/1024);
pbMemorySum.Value = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024);
lblSum.Text = (myInfo.Info.TotalPhysicalMemory / 1024).ToString();
//获取可用物理内存总量
pbMemoryUse.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024);
pbMemoryUse.Value = Convert.ToInt32(myInfo.Info.AvailablePhysicalMemory / 1024 / 1024);
lblMuse.Text = (myInfo.Info.AvailablePhysicalMemory / 1024).ToString();
//获取虚拟内存总量
pbVmemorysum.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
pbVmemorysum.Value = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
lblVinfo.Text = (myInfo.Info.TotalVirtualMemory / 1024).ToString();
//获取可用虚拟内存总量
pbVmemoryuse.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
pbVmemoryuse.Value = Convert.ToInt32(myInfo.Info.AvailableVirtualMemory/ 1024 / 1024);
lblVuse.Text = (myInfo.Info.AvailableVirtualMemory / 1024).ToString();