【问题标题】:Modifying opacity of any window from C#从 C# 修改任何窗口的不透明度
【发布时间】:2023-03-05 01:53:02
【问题描述】:

是否可以从 C# 修改所有打开的窗口的不透明度。我用谷歌搜索最小化窗口,我知道它可以通过 pInvoke 调用。它甚至奏效了。同样是否可以从 C# 更改所有打开的窗口的不透明度?

另外,我不喜欢 MFC 的东西。还有任何工具可以知道 dll 中公开的 api 列表吗?

【问题讨论】:

    标签: c# windows mfc pinvoke window-handles


    【解决方案1】:

    您可以使用SetLayeredWindowAttributes API 这样做。

    Check this 用于此 API 的 pInvoke 版本。

    来自上述链接的示例代码:

    [DllImport("user32.dll")]
    static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey,byte bAlpha, uint dwFlags);
    
    public const int GWL_EXSTYLE = -20;
    public const int WS_EX_LAYERED = 0x80000;
    public const int LWA_ALPHA = 0x2;
    public const int LWA_COLORKEY = 0x1;
    
    //set the window style to alpha appearance
    private void button4_Click(object sender, EventArgs e)
    {
        SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) ^ WS_EX_LAYERED);
        SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA);
    }
    

    【讨论】:

    • 谢谢,它成功了。但是有没有一个工具可以让我看到所有这些 api 及其描述???
    • 可能有,但我现在想不起任何人。我使用谷歌这个顺便说一句:)
    • pinvoke.net 是一个很好的资源。另外还有很多工具,一些免费的,一些商业的,可以为你生成 P/Invoke 签名。 PInvoke.NET 是上述站点提供的免费插件,另外还有 pinvoker.net
    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多