如何撤消 SetWindowDisplayAffinity 方法?
How can I undo SetWindowDisplayAffinity method?
我有一个阻止屏幕捕获的 C# 应用程序,但我想禁用“黑屏”。
这是我的代码:
[DllImport("user32.dll")]
public static extern uint SetWindowDisplayAffinity(IntPtr hWnd, uint dwAffinity);
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
SetWindowDisplayAffinity(this.Handle, WDA_MONITOR);
}
我可以通过什么方式禁用它?
使用 SetWindowDisplayAffinity,要从捕获中排除 window,传递 WDA_EXCLUDEFROMCAPTURE
或 WDA_MONITOR
作为参数并撤消(包含在捕获中),传递 WDA_NONE
:
[DllImport("user32.dll")]
static extern uint SetWindowDisplayAffinity(IntPtr hWnd, uint dwAffinity);
const uint WDA_NONE = 0x00000000;
const uint WDA_MONITOR = 0x00000001;
const uint WDA_EXCLUDEFROMCAPTURE = 0x00000011;
private void includeButton_Click(object sender, EventArgs e)
{
SetWindowDisplayAffinity(this.Handle, WDA_NONE);
}
private void excludeButton_Click(object sender, EventArgs e)
{
SetWindowDisplayAffinity(this.Handle, WDA_MONITOR);
}
Window 包含在捕获中:
Window 从捕获中排除:
我有一个阻止屏幕捕获的 C# 应用程序,但我想禁用“黑屏”。
这是我的代码:
[DllImport("user32.dll")]
public static extern uint SetWindowDisplayAffinity(IntPtr hWnd, uint dwAffinity);
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
SetWindowDisplayAffinity(this.Handle, WDA_MONITOR);
}
我可以通过什么方式禁用它?
使用 SetWindowDisplayAffinity,要从捕获中排除 window,传递 WDA_EXCLUDEFROMCAPTURE
或 WDA_MONITOR
作为参数并撤消(包含在捕获中),传递 WDA_NONE
:
[DllImport("user32.dll")]
static extern uint SetWindowDisplayAffinity(IntPtr hWnd, uint dwAffinity);
const uint WDA_NONE = 0x00000000;
const uint WDA_MONITOR = 0x00000001;
const uint WDA_EXCLUDEFROMCAPTURE = 0x00000011;
private void includeButton_Click(object sender, EventArgs e)
{
SetWindowDisplayAffinity(this.Handle, WDA_NONE);
}
private void excludeButton_Click(object sender, EventArgs e)
{
SetWindowDisplayAffinity(this.Handle, WDA_MONITOR);
}
Window 包含在捕获中:
Window 从捕获中排除: