C# 我可以截取活动下方的所有内容 window

C# Can I take screenshot of everything below active window

是否有任何方法/API 允许调用 CopyFromScreenAtDepth

我尝试在活动状态下捕获 GUI 的预览 window

然后对其进行模糊处理以实现类似于 Aero glass / OS X 磨砂玻璃模糊效果

我试过很多解决方法

  1. Form 不透明度设置为 0,然后捕捉并设置回 1,这会导致我的表单闪烁。

  2. 使用相同的透明键制作 Form 背景 Blue,这将在第一次工作但 GUI 不会更新,所以如果我调用 this.Update()它会更新 GUI,但也会导致闪烁。

我的代码:

private void MyForm_Load(object sender, EventArgs e) {
    Timer timer1 = new Timer();
    timer1.Tick += new EventHandler(UpdateBackground);
    timer1.Interval = 100; // in miliseconds
    timer1.Start();
}

private void UpdateBackground(object sender, EventArgs e)
{
    this.BackgroundImage = null;
    Bitmap myImage = new Bitmap(this.Width, this.Height);
    using (Graphics g = Graphics.FromImage(myImage))
    {
        this.Update();
        g.CopyFromScreen(new Point(this.Location.X, this.Location.Y), Point.Empty, new Size(this.Width, this.Height)); 
    }
    ImageTools.FastBlur(myImage, 4);
    this.BackgroundImage = myImage;
}

Windows 没有这样的 CopyFromScreenAtDepth() 方法调用。

您最好的办法是使用 Windows Magnification API for C++。
使用它有 TONs 的缺点,比如无法控制 Window 的位置和大小,功能有限,根本 none,同时拥有两个副本窗体下方的屏幕和能够有其他控件,以及在 64 位 OS...

下使用 32 位应用程序和 API 时的 WOW64 问题

我知道这是一个老问题,但由于这是一个有效的问题,到目前为止还没有答案,我认为回答它是公平的。
还有其他类似的问题(也没有答案,可能被称为重复...)