public void InvokeDefault(int x, int y) { Create(); int defaultCommand = RUser32.GetMenuDefaultItem(_menuHandle, false, 0); if (defaultCommand != -1) { SCmInvokeCommandInfoEX invoke = new SCmInvokeCommandInfoEX(); invoke.cbSize = Marshal.SizeOf(typeof(SCmInvokeCommandInfoEX)); invoke.lpVerb = (IntPtr)(defaultCommand - RWinShell.CMD_FIRST); invoke.lpDirectory = string.Empty; invoke.fMask = 0; invoke.ptInvoke = new SPoint(); invoke.ptInvoke.x = x; invoke.ptInvoke.y = y; invoke.nShow = 1; _face.InvokeCommand(ref invoke); } }
public int Popup(IntPtr handle, int x, int y) { Create(); uint cmd = RUser32.TrackPopupMenuEx(_menuHandle, ETrackPopupMenu.RETURNCMD, x, y, handle, IntPtr.Zero); _menuHandle = IntPtr.Zero; if (cmd >= RWinShell.CMD_FIRST) { SCmInvokeCommandInfoEX invoke = new SCmInvokeCommandInfoEX(); invoke.cbSize = Marshal.SizeOf(typeof(SCmInvokeCommandInfoEX)); invoke.lpVerb = (IntPtr)(cmd - 1); invoke.lpDirectory = string.Empty; invoke.fMask = 0; invoke.ptInvoke = new SPoint(); invoke.ptInvoke.x = x; invoke.ptInvoke.y = y; invoke.nShow = 1; _face.InvokeCommand(ref invoke); } return((int)cmd); }