侧边栏壁纸
  • 累计撰写 98 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

DotNetDetour钩子

祈安千
2026-07-17 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

Why

  • 最近使用Dev开发的时候,老是会蹦出弹窗,确实有点烦了就可以了一下Dev的源码,发现一个很扯淡的事儿,它会检查上一个弹窗的额时间,如果超过30分钟就会弹出,确实恶心的不行,以下是源码截图:
    dev_showabout.png
  • 基于此我干脆就直接打算用钩子解决这个问题,找到了一个比较实用的叫DotNetDetour。怎么找到注册类就不说了,需要点脑子。
  • 本来事儿到这就很简单的,结果我跟了最新的NuGet的源码发现,这个东西在开始的时候,每一次都会往C盘下的一个叫1.log这个文件里写一个1,对的,就是啥事儿也不干就写个1,本来也没啥,但是牵扯到C盘就涉及到了权限的问题,管理员权限,我又不想每次打开VS都得管理员权限,烦躁之下去Github上找源码,结果发现最新的源码居然是6年前的,都是第一个版本的,最新都第三个版本了。但是以本人超强的智慧最后还是拿到了源码,修改了一些错误之后重新编译,完美运行~

How

  • 以下是使用DotNetDetour实现Dev跳过弹窗的详细代码:
  /// <summary>
  /// 自定义钩子事件
  /// </summary>
  private static void HookManager()
  {
      Monitor.Install();
  }
   /// <summary>
 /// 彻底拦截DevExpress的弹窗 不可删除
 /// </summary>
 public class Utils : IMethodMonitor
 {
     #region 去掉弹窗
     [Monitor("DevExpress.Utils.About", "Utility")]
     public bool ShouldShowAbout()
     {
	     //强制跳过弹窗 返回不显示
         return false;
     }
     [MethodImpl(MethodImplOptions.NoInlining)]
     [Original]
     public bool ShouldShowAbout_Original()
     {
         return false;
     }
     #endregion
 }
  • 注意需要在程序启动最开始的时候调用HookManager方法,必须在调用Dev之前。

Tips

  • 什么?你说上面为什么这么写?这边建议跟DevExpress.Data的源码呢亲~
0

评论区