using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using Microsoft.Win32;
namespace MRU
{
static class Program
{
#region DllImportAttribute
[DllImport("user32.dll", EntryPoint = "ShowWindow")]
static extern bool ShowWindow(IntPtr handle, int flags);
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
static extern bool SetForegroundWindow(IntPtr handle);
#endregion
[STAThread]
static void Main()
{
#region Mutex
bool isCreated; // 互斥体名称须唯一。
using (Mutex newMutex = new Mutex(true, @"Local\MRU", out isCreated))
{
if (isCreated)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using (RegistryKey subKey = Application.UserAppDataRegistry)
{
FormMRU frame = new FormMRU();
subKey.SetValue("Handle", frame.Handle);
Application.Run(frame);
}
newMutex.ReleaseMutex(); // 释放互斥体的所属权。
}
else
{
string text = string.Format("“{0}”应用程序已经运行。", AppDomain.CurrentDomain.FriendlyName);
MessageBox.Show(text, "系统提示!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
using (RegistryKey subKey = Application.UserAppDataRegistry)
{
IntPtr handle = new IntPtr(Convert.ToInt32(subKey.GetValue("Handle")));
ShowWindow(handle, 1);
SetForegroundWindow(handle);
}
}
}
#endregion
}
}
}
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Microsoft.Win32;
namespace MRU
{
public partial class FormMRU : Form
{
public FormMRU()
{
#region
InitializeComponent();
ListView listViewMRU = new ListView();
listViewMRU.Dock = DockStyle.Fill;
listViewMRU.HeaderStyle = ColumnHeaderStyle.None;
listViewMRU.View = View.Details;
listViewMRU.CheckBoxes = true;
listViewMRU.ShowGroups = true;
listViewMRU.Scrollable = false;
listViewMRU.BeginUpdate();
ListViewGroup pro = listViewMRU.Groups.Add("profile", Environment.UserName);
listViewMRU.Items.Add(Environment.GetFolderPath(Environment.SpecialFolder.Cookies)).Group = pro;
listViewMRU.Items.Add(Environment.GetFolderPath(Environment.SpecialFolder.Recent)).Group = pro;
string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
listViewMRU.Items.Add(Path.Combine(appdata, @"Microsoft\Office\Recent")).Group = pro;
listViewMRU.Items.Add(Path.Combine(appdata, "Tencent")).Group = pro;
listViewMRU.Items.Add(Path.GetTempPath()).Group = pro;
listViewMRU.Items.Add(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)).Group = pro;
ListViewGroup reg = listViewMRU.Groups.Add("regedit", "HKEY_CURRENT_USER");
listViewMRU.Items.Add(@"Software\Microsoft\Internet Explorer\TypedURLs").Group = reg;
listViewMRU.Items.Add(@"Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU").Group = reg;
listViewMRU.Items.Add(@"Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32").Group = reg;
listViewMRU.Items.Add(@"Software\Microsoft\Windows\CurrentVersion\Applets\Wordpad\Recent File List").Group = reg;
listViewMRU.Items.Add(@"Software\Microsoft\MediaPlayer\Player\RecentFileList").Group = reg;
listViewMRU.Items.Add(@"Software\WinRAR\ArcHistory").Group = reg;
ColumnHeader column = listViewMRU.Columns.Add("");
column.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
listViewMRU.EndUpdate();
listViewMRU.ItemChecked += new ItemCheckedEventHandler(listViewMRU_ItemChecked);
this.Controls.Add(listViewMRU);
this.ClientSize = new System.Drawing.Size(column.Width + 8, 300);
this.Text = Environment.UserName;
this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
this.SizeGripStyle = SizeGripStyle.Hide;
this.StartPosition = FormStartPosition.CenterScreen;
#endregion
}
#region ListView_ItemChecked
private void listViewMRU_ItemChecked(object sender, ItemCheckedEventArgs e)
{
if (!e.Item.Checked)
return;
DirectoryInfo dir = new DirectoryInfo(e.Item.Text);
switch (e.Item.Index)
{
case 0:
case 1:
case 2:
foreach (FileInfo info in dir.GetFiles())
{
if (Regex.IsMatch(info.Extension, @".(dat|ini)", RegexOptions.IgnoreCase)) // 指定不区分大小写的匹配。
continue;
this.Text = info.Name;
info.Delete();
}
break;
case 3:
case 4:
foreach (FileSystemInfo info in dir.GetFileSystemInfos())
{
try
{
if (info is FileInfo)
info.Delete();
else
(info as DirectoryInfo).Delete(true);
}
catch
{
continue;
}
finally
{
this.Text = info.Name;
}
}
break;
case 5:
foreach (FileInfo info in dir.GetFiles("*.*", SearchOption.AllDirectories))
{
if (Regex.IsMatch(info.Extension, @".(dat|ini)", RegexOptions.IgnoreCase)) // 指定不区分大小写的匹配。
continue;
try
{
info.Delete();
}
catch
{
continue;
}
finally
{
this.Text = info.Name;
}
}
break;
case 6:
case 7:
case 9:
case 10:
case 11:
using (RegistryKey subKey = Registry.CurrentUser.CreateSubKey(e.Item.Text))
{
foreach (string mru in subKey.GetValueNames())
{
subKey.DeleteValue(mru);
}
}
break;
case 8:
using (RegistryKey subKey = Registry.CurrentUser.CreateSubKey(e.Item.Text))
{
foreach (string mru in subKey.GetSubKeyNames())
{
subKey.DeleteSubKeyTree(mru);
}
}
break;
}
this.Text = Environment.UserName;
}
#endregion
}
}