这个简短的 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/