这个问题的动机是我对Visual Studio gui的不满,但它可能有更广泛的含义。
假设我右键单击当前文档的文件名选项卡。我将看到一个弹出菜单,其中包含我可能会使用的有用选项,例如关闭此文档,以及一些可能彻头彻尾的有害概念,例如关闭所有文档,但这样做。如果我不小心点击了错误的那个,我将不得不撤消损坏,这将很烦人。
好吧,我明白我不能指望微软(更不用说小公司)为每一个菜单项添加自定义。但是,也许有一个Windows hack可以允许我禁用这些菜单项和用户界面的其他元素?让我们说“关闭除此之外的所有内容”可以通过其不同的名称来检测,因此如果底层组件以某种方式可以进行黑客攻击,也许可以在显示此类文本时始终禁用它,除非用户跳过箍来撤消限制。
那么这些东西怎么运作?我们在多大程度上可以搞乱第三方Windows应用程序用户界面?什么可以做,不能做什么?
答案 0 :(得分:2)
嗯,他们做到了。无论如何,它们都像微软一样,在设计良好的用户界面中很常见,就像在Visual Studio中那样。您可以使用工具+自定义,命令选项卡,上下文菜单单选按钮,“其他上下文菜单|简易MDI文档窗口”。删除/添加您喜欢/喜欢的内容。好吧,所以我明白我做不到 期待微软(更不用说了 小公司)补充 为每一个人定制 菜单项
点击一下,看看你能做些什么。不要害怕菜单。
如果该功能不存在,则可以在菜单存储为本机资源时进行破解。文件+打开+文件,选择.exe并浏览菜单节点。这些天不再使用原生菜单并不常见。也有很多麻烦的机会。使用SetWindowsHookEx()设置的钩子来破解程序是另一个长距离镜头。
答案 1 :(得分:0)
Visual Studio(您尚未说明哪个版本)具有可扩展性SDK以及加载加载项和扩展程序的功能,这可能会让您这样做。
答案 2 :(得分:0)
我给你编写的代码,用于禁用MDI子窗体中MDI Parent的任何上下文菜单。 这是一段疯狂的代码,但它运行正常。
这是儿童表格:
private void Form2_Load(object sender, EventArgs e)
{
MDI.MDIParent1.ActiveForm.MainMenuStrip.Items[0].ToolTipText = "Disable";
}
这是MID父代码:
定时器间隔为1000毫秒,并在MDIParent1_Load
上启用。
fileMenu
是MDI父级中的菜单条
aboutToolStripMenuItem
是MDI父级中的上下文菜单。
private void timer1_Tick(object sender, EventArgs e)
{
if (fileMenu.ToolTipText == "Disable")
{
aboutToolStripMenuItem.Enabled = false;
}
}