Introduction
In times of Windows XP I liked having my desktop just for the data I worked with and my application launchers (lots of them) separately at the right side of the screen.
Since Windows Vista (AFAIK), there is no way how to drag the "quick launch" out of the taskbar and drop it elsewhere. First, I tried to search for any freeware/shareware that would simulate the XP "quick launch" behaviour. I haven't found anything similar (just taskbar-bound gadgets or floating panels with animations which I didn't like). So I decided to write one. I don't include a complete downloadable application, just a framework how to create it in a very easy way.
Using the code
- Sort your desktop icons according to the type and move the shortcuts (.lnk files) to a folder (e.g., C:\Users\John Doe\Documents\Panel).
- Create Windows forms application. I suggest these Form1 properties:
FormBorderStyle = FixedToolWindow
StartPosition = Manual
MaximizeBox = False
MinimizeBox = False
ShowInTaskbar = False
Set the Text
, Size
, and
Location
according to your needs.
- Drop a
ListView
onto a form and dock it to fill it. I suggest these
listView1
properties:
HeaderStyle = None
Dock = Fill
HoverSelection = True
HotTracking = True
Activation = OneClick
Set the BackColor
, Font
, and
ForeColor
according to your needs.
- Switch to the code. Put this code into the constructor of the Form1.
public Form1()
{
InitializeComponent();
listView1.Columns.Add("Shortcut", -2);
string[] files = Directory.GetFiles(@"C:\Users\John Doe\Documents\Panel");
ImageList ilSmall = new ImageList();
foreach (string fp in files)
{
ilSmall.Images.Add(IconFromFilePath(fp));
}
listView1.SmallImageList = ilSmall;
listView1.View = View.Details;
int iIdx = 0;
foreach (string file in files)
{
string fileName = Path.GetFileNameWithoutExtension(file);
ListViewItem item = new ListViewItem(fileName);
item.Tag = file;
listView1.Items.Add(item);
item.ImageIndex = iIdx++;
}
}
- Implement some more methods/handlers.
private Icon IconFromFilePath(string filePath)
{
Icon result = null;
try
{
result = Icon.ExtractAssociatedIcon(filePath);
}
catch { }
return result;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Really quit?", "Confirm",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) !=
System.Windows.Forms.DialogResult.Yes)
e.Cancel = true;
}
private void listView1_ItemActivate(object sender, EventArgs e)
{
ListViewItem lvi = listView1.SelectedItems[0];
Process proc = new Process();
try
{
proc.StartInfo.FileName = (string)lvi.Tag;
proc.Start();
}
catch { }
}
- Compile the application and put the executable to your Startup folder. Log off, log on and enjoy!