Hello everyone,
I'm new to the forum and this is only my second post, so I apologize in advance for any mistakes.
This is my situation:
I'm using Microsoft Visual Studio 2008 with .Net Framework 3.5.
I'm developing an extension of the Windows Shell Context menu, and I did it, but I have a problem:
when my menu is invoked on the links (*.lnk), it doesn't work and prevents the upper voices.
This only occurs on Vista and Seven, not on XP.
This is the IContextMenu.Qu eryContextMenu:
I don't know what to do!
Please help me!
Thank you in advance for your help!
PS: I apologize for my bad English, too: I'm Italian!
I'm new to the forum and this is only my second post, so I apologize in advance for any mistakes.
This is my situation:
I'm using Microsoft Visual Studio 2008 with .Net Framework 3.5.
I'm developing an extension of the Windows Shell Context menu, and I did it, but I have a problem:
when my menu is invoked on the links (*.lnk), it doesn't work and prevents the upper voices.
This only occurs on Vista and Seven, not on XP.
This is the IContextMenu.Qu eryContextMenu:
Code:
int IContextMenu.QueryContextMenu(uint hmenu,
uint iMenu,
int idCmdFirst,
int idCmdLast,
uint uFlags)
{
//Clicked file
StringBuilder sb = new StringBuilder(1024);
DllImports.DragQueryFile(m_hDrop, 0, sb, sb.Capacity + 1);
//If it's a link (*.lnk) exits
//Maybe the mistake is here, but I don't know!
if (new FileInfo(sb.ToString()).Extension == ".lnk") { return 1; }
// Adds the menus
for (int i = 0; i < Menus.Length; i++)
{
//Updates the ID
Menus[i].MenuItemInfo.wID += idCmdFirst;
//Verifies if the menu has some submenus
if (Menus[i].SubMenu != null) { PopolateSubMenu(Menus[i], idCmdFirst); }
//Adds the menu
DllImports.InsertMenuItem(hmenu, Menus[i].Position - 1, 1, ref Menus[i].MenuItemInfo);
//Adds the icon
if (Menus[i].Image != null) {
System.Drawing.Bitmap Bmp = Menus[i].Image;
DllImports.SetMenuItemBitmaps((IntPtr)hmenu, (IntPtr)(Menus[i].Position - 1), 0x400, Bmp.GetHbitmap(), Bmp.GetHbitmap());
}
}
// Returns the number of added menu item
return (int)(NumeroMenu + 1);
}
Please help me!
Thank you in advance for your help!
PS: I apologize for my bad English, too: I'm Italian!