草庐IT

c# - DwmGetWindowAttribute 使用 PInvoke 返回 0

我正在尝试通过捕获特定窗口来进行屏幕捕获,为了准确计算出要捕获的窗口的大小,我想使用DwmGetWindowAttribute()。当我在Windows10上使用PInvoke调用此函数时,即使结果值为0(成功),Rect结构始终为空。传入的Window句柄也是有效的,因为有调用GetWindowRect()的回退代码有效(尽管存在边框问题)。我有点不知所措。我之前使用过相同的代码(可能是在Windows8.1上?)并且相同的代码似乎可以正常工作,但现在无论我做什么,对函数的调用总是返回一个空结构。这是相关代码。定义:[DllImport("dwmapi.dll")]staticext

windows - 如何使用 DWMWA_FREEZE_REPRESENTATION 卡住实时缩略图?

我成功地将另一个窗口的内容(现在在我的测试用例中,记事本)投影到我自己的窗口中。它工作得很好。我无法做到的是卡住它,正如API使用DwmSetWindowAttribute(here)和参数DWMWA_FREEZE_REPRESENTATION(here)所提供的那样,根据互联网等于15。dwmSetWindowAttribute(MyWindow,15,@Value,1)我几乎尝试了所有变体。发送1个字节,发送4个字节,值1、0,“maxdword”等。返回值始终为-2147024809,除非我弄错了-表示“无效参数”。由于BitBlt的速度较慢,通过获取我正在投影的窗口的DC来使用