首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DwmSetWindowAttribute不适用于DWMWA_CLOAK

DwmSetWindowAttribute不适用于DWMWA_CLOAK
EN

Stack Overflow用户
提问于 2019-03-21 10:56:32
回答 1查看 1.3K关注 0票数 0

我最近开始使用带有C#的低级windows APIsn作为应用程序原型,我偶然发现了一个我无法解决的问题:考虑以下代码:

代码语言:javascript
复制
public class dW
{
    [DllImport("dwmapi.dll")]
    public static extern int DwmSetWindowAttribute(IntPtr hwnd, DwmWindowAttribute dwAttribute, ref int pvAttribute, int cbAttribute);

    [Flags]
    public enum DwmWindowAttribute : uint
    {
        DWMWA_NCRENDERING_ENABLED = 1,
        DWMWA_NCRENDERING_POLICY,
        DWMWA_TRANSITIONS_FORCEDISABLED,
        DWMWA_ALLOW_NCPAINT,
        DWMWA_CAPTION_BUTTON_BOUNDS,
        DWMWA_NONCLIENT_RTL_LAYOUT,
        DWMWA_FORCE_ICONIC_REPRESENTATION,
        DWMWA_FLIP3D_POLICY,
        DWMWA_EXTENDED_FRAME_BOUNDS,
        DWMWA_HAS_ICONIC_BITMAP,
        DWMWA_DISALLOW_PEEK,
        DWMWA_EXCLUDED_FROM_PEEK,
        DWMWA_CLOAK,
        DWMWA_CLOAKED,
        DWMWA_FREEZE_REPRESENTATION,
        DWMWA_LAST
    }

    public IntPtr Handle { get; private set; }

    public void HideWindow()
    {
        int value = 0x01;
        int hr  = DwmSetWindowAttribute(Handle, DwmWindowAttribute.DWMWA_CLOAK, ref value, Marshal.SizeOf(typeof(int)));
    }
}

考虑到句柄是一个定义良好的IntPtr。我尝试使用DwmSetWindowAttribute来遮盖一个窗口,但是由于某种奇怪的原因,它总是无法工作(窗口始终保持可见),并且结果(存储在hr中)总是-2147024891。我只是不明白为什么会这样,因为代码似乎是正确的(imho)。你有什么线索吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-09 06:20:35

我也得到了相同的结果(拒绝访问),即使是使用Admin,我发现只有系统外壳和应用程序本身可以设置伪装,第三方进程将被拒绝。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55273112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档