private bool HandleClick(Point pt, Keys modifierKeys, bool middle)
        {
            IShellItem item = null;

            try {
                WindowsAPI.TVHITTESTINFO structure = new WindowsAPI.TVHITTESTINFO {
                    pt = pt
                };
                IntPtr wParam = WindowsAPI.SendMessage(treeController.Handle, 0x1111, IntPtr.Zero, ref structure);
                if (wParam != IntPtr.Zero)
                {
                    if ((structure.flags & 0x10) == 0 && (structure.flags & 0x80) == 0)
                    {
                        treeControl.HitTest(pt, out item);
                        if (item != null)
                        {
                            ShellObject obj = ShellObjectFactory.Create(item);
                            TreeViewClicked(obj, modifierKeys, middle);
                        }
                    }
                }
            } finally {
                if (item != null)
                {
                    Marshal.ReleaseComObject(item);
                }
            }
            return(false);
        }