在 C# 中绘制 Windows 任务栏

Draw on Windows taskbar in C#

我想为 Windows 制作一个二进制时钟。但我希望它 替换 默认时钟(有 2 个时钟是不理想的)。

因此,其中一种方法就是在旧时钟之上绘制我的二进制时钟。我怎么做?允许使用外部库。

我试过这样的东西:

    public Form1()
    {
        InitializeComponent();
        this.Paint += new PaintEventHandler(Form1_Paint);
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.FillEllipse(new SolidBrush(Color.Blue), new Rectangle(1500, 790, 20, 20));
    }

但它没有到达任务栏(右下角):

如果事实证明这是不可能的,我会提出另一个关于桌带的问题。但现在我要问的是在 Windows 任务栏上绘图。

这种方法有很多问题。

  1. 任务栏独立存在,独立于您的应用程序。您不能很容易地在它上面绘图,您需要通过 Windows SDK 才能与之交互(例如,自定义应用程序的弹出窗口预览)。此外,如果 Windows 允许每个想要在任务栏顶部绘制的应用程序这样做,那将是一个糟糕的主意。大家抽奖谁赢?

  2. 即使您可以利用它,您也必须考虑它及其弹出窗口的每一件事window 确实 。它有多宽?如果你点击日历会发生什么?如果风格不同怎么办?如果有多个时钟怎么办?用户甚至有权使用时钟做事吗?

  3. 没有替换时钟的内置方法。替换 确实存在 ,但主要是通过挂钩弹出窗口 window 并执行我在第二个选项中列出的操作。以 T-Clock 为例。

你最好走另一条路。