diff --git a/WindowsTools/WindowsAPI/ComTypes/ICoreWindowInterop.cs b/WindowsTools/WindowsAPI/ComTypes/ICoreWindowInterop.cs new file mode 100644 index 0000000..0d143be --- /dev/null +++ b/WindowsTools/WindowsAPI/ComTypes/ICoreWindowInterop.cs @@ -0,0 +1,28 @@ +using System; +using System.Runtime.InteropServices; + +namespace WindowsTools.WindowsAPI.ComTypes +{ + /// + /// 使应用能够 (与此接口关联的 CoreWindow) 获取窗口的窗口句柄。 + /// + [ComImport, Guid("45D64A29-A63E-4CB6-B498-5781D298CB4F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + public partial interface ICoreWindowInterop + { + /// + /// 获取应用的 CoreWindow (HWND) 句柄。 + /// + /// CoreWindow 的窗口句柄 + /// 此方法返回 HRESULT 成功或错误代码。 + [PreserveSig] + int GetWindowHandle(out IntPtr hwnd); + + /// + /// 设置是否已处理到 CoreWindow 的消息。此属性是只写的。 + /// + /// 标志该消息是否已被处理 + /// 此方法返回 HRESULT 成功或错误代码。 + [PreserveSig] + int SetMessageHandled([MarshalAs(UnmanagedType.Bool)] bool value); + } +} diff --git a/WindowsTools/WindowsAPI/ComTypes/IDesktopWindowXamlSourceNative2.cs b/WindowsTools/WindowsAPI/ComTypes/IDesktopWindowXamlSourceNative2.cs new file mode 100644 index 0000000..caa5867 --- /dev/null +++ b/WindowsTools/WindowsAPI/ComTypes/IDesktopWindowXamlSourceNative2.cs @@ -0,0 +1,34 @@ +using System; +using System.Runtime.InteropServices; + +namespace WindowsTools.WindowsAPI.ComTypes +{ + [ComImport, Guid("e3dcd8c7-3057-4692-99c3-7b7720afda31"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + public interface IDesktopWindowXamlSourceNative2 + { + /// + /// 将当前 IDesktopWindowXamlSourceNative 实例附加到桌面应用中与窗口句柄关联的父 UI 元素。 + /// + /// 要在其中托管 WinRT XAML 控件的父 UI 元素的窗口句柄。 + /// 如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。 + [PreserveSig] + int AttachToWindow(IntPtr parentWnd); + + /// + /// 获取与当前 IDesktopWindowXamlSourceNative 实例关联的父 UI 元素的窗口句柄。 + /// + /// 在输出时,此参数包含与当前 IDesktopWindowXamlSourceNative 实例关联的父 UI 元素的窗口句柄。 + /// 如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。 + [PreserveSig] + int GetWindowHandle(out IntPtr hwnd); + + /// + /// 使 WinRT XAML 框架能够处理托管 WinRT XAML 控件的 DesktopWindowXamlSource 对象的 Windows 消息。 + /// + /// 要处理的 Windows 消息。 + /// 如果消息已处理,则为 True;否则为 false。 + /// 如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。 + [PreserveSig] + int PreTranslateMessage(ref MSG message, out bool result); + } +} diff --git a/WindowsTools/WindowsAPI/ComTypes/IXamlSourceTransparency.cs b/WindowsTools/WindowsAPI/ComTypes/IXamlSourceTransparency.cs new file mode 100644 index 0000000..62395aa --- /dev/null +++ b/WindowsTools/WindowsAPI/ComTypes/IXamlSourceTransparency.cs @@ -0,0 +1,28 @@ +using System; +using System.Runtime.InteropServices; + +namespace WindowsTools.WindowsAPI.ComTypes +{ + /// + /// 获取或设置一个值,该值指定当前线程上所有 DesktopWindowXamlSource 对象的背景是否透明。 + /// + [ComImport, Guid("06636C29-5A17-458D-8EA2-2422D997A922"), InterfaceType(ComInterfaceType.InterfaceIsIInspectable)] + public interface IXamlSourceTransparency + { + /// + /// 获取当前线程上所有 DesktopWindowXamlSource 对象的背景是否透明。 + /// + /// 如果窗口背景透明,则为 true ;否则,为 false. + /// 如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。 + [PreserveSig] + int GetIsBackgroundTransparent([MarshalAs(UnmanagedType.Bool)] out bool isBackgroundTransparent); + + /// + /// 设置当前线程上所有 DesktopWindowXamlSource 对象的背景是否透明。 + /// + /// 如果窗口背景透明,则为 true ;否则,为 false. + /// 如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。 + [PreserveSig] + int SetIsBackgroundTransparent([MarshalAs(UnmanagedType.Bool)] bool isBackgroundTransparent); + } +} diff --git a/WindowsTools/WindowsAPI/ComTypes/MSG.cs b/WindowsTools/WindowsAPI/ComTypes/MSG.cs new file mode 100644 index 0000000..c90be0d --- /dev/null +++ b/WindowsTools/WindowsAPI/ComTypes/MSG.cs @@ -0,0 +1,47 @@ +using System; +using System.Runtime.InteropServices; + +namespace WindowsTools.WindowsAPI.ComTypes +{ + /// + /// 包含来自线程的消息队列的消息信息。 + /// + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + public struct MSG + { + /// + /// 其窗口过程接收消息的窗口的句柄。 当消息是线程消息时,此成员为 NULL 。 + /// + public IntPtr hwnd; + + /// + /// 消息的标识符。 应用程序只能使用低字;高字由系统保留。 + /// + public uint message; + + /// + /// 关于消息的附加信息。 确切含义取决于 消息 成员的值。 + /// + public IntPtr wParam; + + /// + /// 关于消息的附加信息。 确切含义取决于 消息 成员的值。 + /// + public IntPtr lParam; + + /// + /// 消息的发布时间。 + /// + public uint time; + + /// + /// 发布消息时的光标位置(以屏幕坐标表示)。 + /// + public int pt_x; + + /// + /// 发布消息时的光标位置(以屏幕坐标表示)。 + /// + public int pt_y; + } +}