在本文中,将探讨在构建Windows 10桌面广告拦截器前端时所涉及的一系列主题。下一篇文章将介绍这个广告拦截器的后端部分。主要目标是创建一个可以通过点击通知图标来启用或禁用的广告拦截器。
用户界面的目标非常明确:
可以在Visual Studio 2019预览版或独立运行中测试AdBlockerTest
。可以使用调试版本或发布版本。建议在调试器下运行调试版本,以便与运行中的应用程序交互,查看其操作。
执行开始于Program
模块,并使用AppWrapper
项目、AdBlockingManager
存根和AdBlockerLibrary
项目。AdBlockerLibrary
项目反过来使用NotifyIconWrapper
项目。
AdBlockingLibrary
中有一个名为IAdBlockingManager
的接口,它“定义了”AdBlockingLibrary
与其两个可能的客户:AdBlockingManager
和AdBlockingManagerStub
之间的“契约”。这抽象出了这两个替代客户相对于AdBlockingLibrary
所承担的责任。
一旦应用程序启动,将在任务栏上找到一个通知图标。这个图标将是一个绿色的交通信号。几秒钟后,通知图标将迁移到通知区域。这是在任务栏上点击“^”符号时显示的矩形弹出窗口。可以通过左双击通知图标来反转交通信号的设置。红色(停止)表示当前阻止广告。绿色(前进)表示当前允许广告。还可以使用键盘通过按Windows+B
然后按一些右箭头来导航到通知图标或任务栏上的“^”符号。如果通知图标被隐藏,一旦到达“^”符号,按空格键打开通知区域。然后使用箭头键导航到通知图标。现在可以使用上下文菜单键或Enter键打开应用程序的上下文菜单。可以使用上下箭头键导航到上下文菜单或使用Esc键关闭上下文菜单。还可以通过右键单击通知图标打开上下文菜单。可以使用空格键或Enter键或左键单击所需项来选择上下文菜单中的项。有四个项目:
可以通过点击“X”或按Esc键关闭About
对话框。
这种架构设计的一个不寻常之处在于,主视图是在dll(AdBlockerLibrary
)中定义的,而不是通常的exe(AdBlockerTest
)。
没有选择依赖MVVMLight,而是选择让这个应用程序独立于这样的第三方代码。这种选择的一个影响是,选择了使用EventBindingExtension
而不是预期的EventToCommand
。它更优雅,但不幸的是,可移植性要差得多。如果要使用MVVMLight或其他替代品,可以很容易地在这里进行改装。事实上,这里有几个类可以很容易地被MVVM Light的等效特性所取代。