You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SetWindowDisplayAffinity是否作用于ComboBox下拉列表?技术求助

问题:SetWindowDisplayAffinity无法屏蔽ComboBox下拉列表的屏幕捕获

我正在沙箱应用中测试功能,准备提交到主项目。其中一项功能是使用SetWindowDisplayAffinity使程序UI避免被屏幕捕获工具抓取,该功能在Windows自带截图、OBS Studio等工具中对主窗体生效,但ComboBox的下拉列表却不受影响。

我尝试了Monitor Display Affinity选项和较新的ExcludeFromCapture模式,均无效果,不确定是打开ComboBox列表时创建的控件(或UI)拥有独立句柄未被影响,还是SetWindowDisplayAffinity本身忽略ComboBox。

我附上两张截图以说明情况:红色文本和红色框是用户可见内容,黄色文本和黄色框是屏幕捕获工具可见内容,浅蓝色文本表示Display Affinity状态。

  • 截图1:SetWindowDisplayAffinity已禁用,屏幕捕获软件可看到所有UI组件。
  • 截图2:SetWindowDisplayAffinity已启用配置,所有UI组件应仅对用户可见、无法被捕获,但ComboBox列表无视该设置。

DLL导入代码(无Win32错误)

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
public static extern uint SetWindowDisplayAffinity(IntPtr Handle, DisplayAffinity Affinity);

public enum DisplayAffinity : uint
{
    None = 0x0,
    Monitor = 0x1,
    ExcludeFromCapture = 0x11
}

API调用方式

第一种是常规调用方式,后两种是尝试的临时解决方案:

常规调用

void HideFromCapture()
{
    // <Handle>为窗体主句柄,此处为<MainForm.Handle>。
    SetWindowDisplayAffinity(Handle, DisplayAffinity.ExcludeFromCapture);
    // 在所有UI组件加载完成后调用<HideFromCapture()>。
}

尝试对ComboBox单独调用

void HideFromCaptureFixOne()
{
    // 尝试同时对窗体和ComboBox调用该API。
    SetWindowDisplayAffinity(Handle, DisplayAffinity.ExcludeFromCapture);
    SetWindowDisplayAffinity(MyComboBox.Handle, DisplayAffinity.ExcludeFromCapture);
    // 如预期,无效果。
}

尝试遍历所有控件调用

void HideFromCaptureOrLoseAllHope()
{
    // 尝试遍历所有控件调用该API。
    foreach(Control Target in Controls)
    {
        try
        {
            // 我确定这不是正确的使用方式。
            SetWindowDisplayAffinity(Target.Handle, DisplayAffinity.ExcludeFromCapture);
        }
        catch
        {
            continue;
        }
    }

    /*
     * 再次说明,我在程序运行时调用这些函数,对窗体有效但对ComboBox无效。
     * 我甚至尝试循环调用该函数,但也无效,还导致内存占用增加。
    */
}

目前我陷入困境,希望能得到解决该问题的技术帮助。

内容的提问来源于stack exchange,提问作者user23223164

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:33:16