Why
- 最近使用
Dev开发的时候,老是会蹦出弹窗,确实有点烦了就可以了一下Dev的源码,发现一个很扯淡的事儿,它会检查上一个弹窗的额时间,如果超过30分钟就会弹出,确实恶心的不行,以下是源码截图:

- 基于此我干脆就直接打算用钩子解决这个问题,找到了一个比较实用的叫
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的源码呢亲~
评论区