我选中多个文件,执行这个菜单命令时会正确,但是如果这时执行其他的菜单命令,如"打开","打印","用记事本打开"等,它却没什么响应了.而这些命令"打开","打印","用记事本打开"对单个文件没问题,或者把我增加的这个右键菜单删除,这些命令也会正确,,代码:
void IContextMenu.InvokeCommand (IntPtr pici)
{
try
{
INVOKECOMMANDINFO ici = (INVOKECOMMANDINFO)Marshal.PtrToStructure(pici, typeof(ShellLib.INVOKECOMMANDINFO)); if (ici.verb == 0)
{
StringBuilder sb = new StringBuilder(1024);
string allFileStr = ""; uint nselected = Helpers.DragQueryFile(m_hDrop, 0xffffffff, null, 0);
for(uint i = 0; i < nselected; i++)
{
ShellLib.Helpers.DragQueryFile(m_hDrop, i, sb, sb.Capacity + 1);
//ProcessFile(delta, sb.ToString());
allFileStr += " \""+sb.ToString()+"\"";
} //MessageBox.Show(allFileStr);
string strPath=@"C:\Program Files\Mis_OA.exe";
try
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Classes\*\shellex\ContextMenuHandlers\Mis_OA");
string str=key.GetValue("path").ToString();
if (str!="")
strPath = str;
key.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
try
{
System.Diagnostics.Process.Start(strPath,allFileStr);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
//return;
}
// TODO: should force refresh of the shell windows ... anyway...
}
catch(Exception)
{
}
}
#endregion先谢过了.