无法在Visual Studio中添加dwmapi.dll [英] Unable to add dwmapi.dll in Visual Studio

查看:129
本文介绍了无法在Visual Studio中添加dwmapi.dll的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我想尝试漂亮的WPF玻璃窗.但是,当我尝试在Visual Studio中尝试添加 dwmapi.dll 作为引用时,我遇到了一个问题.

有一个显示以下内容的消息框:

无法添加对~~ dwmapi.dll的引用.请确保您可以访问该文件,并且该文件是有效的程序集或com组件

一些教程提到我可以导入dwmapi.dll,但这也不起作用.

你能告诉我问题是什么吗?我正在使用Windows Vista和Visual Studio2008.

Hi guys,

I wanted to try the nice WPF glass window. But I face a problem when I try to add dwmapi.dll as a reference in Visual Studio.

There is a message box displaying the following:

A reference to ~~dwmapi.dll could not be added .please make sure you that the file is accessible and that it is valid assembly or com component

Some tutorials mention that I can import dwmapi.dll, but that does not work either.

Can you tell me what the problem is please? I am using Windows Vista and Visual Studio 2008.

推荐答案

很简单,您无法添加对Windows DWM的引用,但是可以使用DllImport( http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx [ ^ ])

我通常要做的是:

创建以下类:
Its simple, you cannot add a reference to the DWM of the windows, BUT you can import it by using the DllImport (http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx[^])

What I usually do is:

Create the following class:
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media;

namespace WpfApplication1
{
    public static class GlassLib
    {
        struct MARGINS
        {
            public MARGINS(Thickness t)
            {
                Left = (int)t.Left;
                Right = (int)t.Right;
                Top = (int)t.Top;
                Bottom = (int)t.Bottom;
            }
            public int Left;
            public int Right;
            public int Top;
            public int Bottom;
        }

        [DllImport("dwmapi.dll", PreserveSig = false)]
        static extern void DwmExtendFrameIntoClientArea(
            IntPtr hwnd, ref MARGINS margins);

        [DllImport("dwmapi.dll", PreserveSig = false)]
        static extern bool DwmIsCompositionEnabled();

        // Extension Method for the window
        public static void ApplyGlass(this Window window)
        {
            try
            {
                if (DwmIsCompositionEnabled())
                {
                    IntPtr hwnd =
                        new WindowInteropHelper(window).Handle;
                    if (hwnd == IntPtr.Zero)
                        throw new InvalidOperationException(
                            "The Window must be shown before extending glass.");

                    window.Background = Brushes.Transparent;
                    HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor =
                        Colors.Transparent;

                    // Setting the MARGINS to -1 in all directions will
                    // cover the client area with Glass Effect
                    MARGINS margins = new MARGINS(new Thickness(-1));
                    DwmExtendFrameIntoClientArea(hwnd, ref margins);
                }
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
        }
    }
}




然后在窗口"中添加您要执行的玻璃效果":




Then in the Window you want to add the Glass Effect you do:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(MainWindow_Loaded);
    }

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        this.ApplyGlass();
    }
}



生成,运行,然后转到玻璃.

请注意,要使此功能正常运行,您必须具有Windows OS 6(Vista)或更高版本,或者处理ApplyGlass方法将引发的异常.

希望这会有所帮助

最好,

Raul Mainardi Neto



Build, Run, and there you go GLASS..

Note that in order for this to work you must either have a Windows OS 6 (Vista) or greater OR handle the Exception that WILL be thrown by the ApplyGlass Method.

Hope this helps

All Best,

Raul Mainardi Neto


谢谢Raul.

这对我非常有帮助! :)
Thank you , Raul .

It was very helpful for me ! :)


-非常感谢宝贵的信息...
-- Thanks a lot unvaluable infos...


这篇关于无法在Visual Studio中添加dwmapi.dll的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆