c# - 从 UWP 中的 CoreWindow 对象获取 HWND

标签 c# uwp hwnd

这个简短的 MSDN 文档说 CoreWindow 有 ICoreWindowInterop 获取 CoreWindow 的句柄 HWND。但我找不到有关如何获取它的引用资料 (C#)。请帮忙。

https://msdn.microsoft.com/en-us/library/dn302119(v=vs.85).aspx

最佳答案

此 COM 接口(interface)只能由 C++ 代码直接访问。在 C# 中,您必须自己声明它并使其与 C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\winrt\CoreWindow.idl 中的接口(interface)声明匹配。像这样:

using System.Runtime.InteropServices;
...
    [ComImport, Guid("45D64A29-A63E-4CB6-B498-5781D298CB4F")] 
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    interface ICoreWindowInterop {
        IntPtr WindowHandle { get; }
        bool MessageHandled { set; }
    }

获取接口(interface)引用需要强制转换,编译器不会让您直接从 CoreWindow 对象进行强制转换。让 DLR 完成工作最容易完成,如下所示:

    dynamic corewin = Windows.UI.Core.CoreWindow.GetForCurrentThread();
    var interop = (ICoreWindowInterop)corewin;
    var handle = interop.WindowHandle;

关于c# - 从 UWP 中的 CoreWindow 对象获取 HWND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34935077/

相关文章:

c# - 访问 Azure 表存储

wpf - 我想禁用特定空气动力学窗口的阴影效果

c++ - WinAPI - 如何组织大量的 HWND 对象?

c# - 不为资源调用 NavigateToLocalStreamUri

c# - 从后面的代码附加 Image/ImageBrush

c# - 如何使用通用 Windows 平台 (UWP) 应用程序执行进程命令(或类似命令)?

c++ - 如何获取给定 HWND 的工具提示文本?

c# - 如何在 WPF 中的 Xaml 文件中添加注释?

c# - 在 WPF WebBrowser 中获取 URL

c# - Entity Framework 并不总是包括子实体