2020-04-11 06:22:07 +08:00
|
|
|
|
// Copyright (c) Microsoft Corporation
|
|
|
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
|
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
|
|
2020-05-10 05:10:57 +08:00
|
|
|
|
using System.Runtime.InteropServices;
|
2020-04-11 06:22:07 +08:00
|
|
|
|
using Microsoft.Toolkit.Win32.UI.XamlHost;
|
2020-03-07 09:46:51 +08:00
|
|
|
|
|
2020-03-12 01:43:32 +08:00
|
|
|
|
namespace Microsoft.PowerToys.Settings.UI
|
2020-03-07 09:46:51 +08:00
|
|
|
|
{
|
2020-05-10 05:10:57 +08:00
|
|
|
|
[ComImport]
|
|
|
|
|
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
|
|
|
|
[Guid("45D64A29-A63E-4CB6-B498-5781D298CB4F")]
|
|
|
|
|
internal interface ICoreWindowInterop
|
|
|
|
|
{
|
|
|
|
|
System.IntPtr WindowHandle { get; }
|
|
|
|
|
|
|
|
|
|
void MessageHandled(bool value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal static class Interop
|
|
|
|
|
{
|
|
|
|
|
public static ICoreWindowInterop GetInterop(this Windows.UI.Core.CoreWindow @this)
|
|
|
|
|
{
|
|
|
|
|
var unkIntPtr = Marshal.GetIUnknownForObject(@this);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var interopObj = Marshal.GetTypedObjectForIUnknown(unkIntPtr, typeof(ICoreWindowInterop)) as ICoreWindowInterop;
|
|
|
|
|
return interopObj;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
Marshal.Release(unkIntPtr);
|
|
|
|
|
unkIntPtr = System.IntPtr.Zero;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[DllImport("user32.dll")]
|
|
|
|
|
public static extern bool ShowWindow(System.IntPtr hWnd, int nCmdShow);
|
|
|
|
|
|
|
|
|
|
public const int SW_HIDE = 0;
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-07 09:46:51 +08:00
|
|
|
|
public sealed partial class App : XamlApplication
|
|
|
|
|
{
|
|
|
|
|
public App()
|
|
|
|
|
{
|
2020-03-12 02:37:27 +08:00
|
|
|
|
Initialize();
|
2020-05-10 05:10:57 +08:00
|
|
|
|
|
|
|
|
|
// Hide the Xaml Island window
|
|
|
|
|
var coreWindow = Windows.UI.Core.CoreWindow.GetForCurrentThread();
|
|
|
|
|
var coreWindowInterop = Interop.GetInterop(coreWindow);
|
|
|
|
|
Interop.ShowWindow(coreWindowInterop.WindowHandle, Interop.SW_HIDE);
|
2020-03-07 09:46:51 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|