构建Windows 10桌面广告拦截器前端

在本文中,将探讨在构建Windows 10桌面广告拦截器前端时所涉及的一系列主题。下一篇文章将介绍这个广告拦截器的后端部分。主要目标是创建一个可以通过点击通知图标来启用或禁用的广告拦截器。

用户界面的目标非常明确:

  • 通过通知图标的上下文菜单控制广告拦截器的操作
  • 提供以下命令:阻止、允许、关于、退出
  • 支持键盘导航
  • 支持多语言
  • 使用MVVM概念:
    • 使用视图模型来分离“什么”和“如何”
    • 使用RelayCommand尽可能减少视图中的事件处理程序
    • 使用EventToCommand分离“什么”和“如何”
  • 通过创建后端存根,使GUI易于测试,可以直接调试而无需提升权限

使用代码

可以在Visual Studio 2019预览版或独立运行中测试AdBlockerTest。可以使用调试版本或发布版本。建议在调试器下运行调试版本,以便与运行中的应用程序交互,查看其操作。

执行开始于Program模块,并使用AppWrapper项目、AdBlockingManager存根和AdBlockerLibrary项目。AdBlockerLibrary项目反过来使用NotifyIconWrapper项目。

AdBlockingLibrary中有一个名为IAdBlockingManager的接口,它“定义了”AdBlockingLibrary与其两个可能的客户:AdBlockingManagerAdBlockingManagerStub之间的“契约”。这抽象出了这两个替代客户相对于AdBlockingLibrary所承担的责任。

一旦应用程序启动,将在任务栏上找到一个通知图标。这个图标将是一个绿色的交通信号。几秒钟后,通知图标将迁移到通知区域。这是在任务栏上点击“^”符号时显示的矩形弹出窗口。可以通过左双击通知图标来反转交通信号的设置。红色(停止)表示当前阻止广告。绿色(前进)表示当前允许广告。还可以使用键盘通过按Windows+B然后按一些右箭头来导航到通知图标或任务栏上的“^”符号。如果通知图标被隐藏,一旦到达“^”符号,按空格键打开通知区域。然后使用箭头键导航到通知图标。现在可以使用上下文菜单键或Enter键打开应用程序的上下文菜单。可以使用上下箭头键导航到上下文菜单或使用Esc键关闭上下文菜单。还可以通过右键单击通知图标打开上下文菜单。可以使用空格键或Enter键或左键单击所需项来选择上下文菜单中的项。有四个项目:

  • 阻止项阻止广告
  • 允许选项允许广告
  • 关于选项打开关于对话框
  • 退出选项关闭上下文菜单,移除通知图标并退出应用程序

可以通过点击“X”或按Esc键关闭About对话框。

感兴趣的点

这种架构设计的一个不寻常之处在于,主视图是在dll(AdBlockerLibrary)中定义的,而不是通常的exe(AdBlockerTest)。

没有选择依赖MVVMLight,而是选择让这个应用程序独立于这样的第三方代码。这种选择的一个影响是,选择了使用EventBindingExtension而不是预期的EventToCommand。它更优雅,但不幸的是,可移植性要差得多。如果要使用MVVMLight或其他替代品,可以很容易地在这里进行改装。事实上,这里有几个类可以很容易地被MVVM Light的等效特性所取代。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485