mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-04-22 21:59:55 +08:00
create a setup builder impl from MicaSetup
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
using MicaSetup.Natives;
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.InteropServices.ComTypes;
|
||||
|
||||
namespace MicaSetup.Shell.Dialogs;
|
||||
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("b7d14566-0509-4cce-a71f-0a554233bd9b")]
|
||||
public interface IInitializeWithFile
|
||||
{
|
||||
void Initialize([MarshalAs(UnmanagedType.LPWStr)] string filePath, AccessModes fileMode);
|
||||
}
|
||||
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("7f73be3f-fb79-493c-a6c7-7ee14e245841")]
|
||||
public interface IInitializeWithItem
|
||||
{
|
||||
void Initialize([In, MarshalAs(UnmanagedType.IUnknown)] object shellItem, AccessModes accessMode);
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
|
||||
[ComVisible(true)]
|
||||
[Guid("b824b49d-22ac-4161-ac8a-9916e8fa3f7f")]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
public interface IInitializeWithStream
|
||||
{
|
||||
void Initialize(IStream stream, AccessModes fileMode);
|
||||
}
|
||||
|
||||
[ComVisible(true)]
|
||||
[Guid("e357fccd-a995-4576-b01f-234630154e96")]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
public interface IThumbnailProvider
|
||||
{
|
||||
[SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "2#"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "1#")]
|
||||
void GetThumbnail(uint squareLength, out nint bitmapHandle, out uint bitmapType);
|
||||
}
|
||||
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("fc4801a3-2ba9-11cf-a229-00aa003d7352")]
|
||||
internal interface IObjectWithSite
|
||||
{
|
||||
void SetSite([In, MarshalAs(UnmanagedType.IUnknown)] object pUnkSite);
|
||||
|
||||
void GetSite(ref Guid riid, [MarshalAs(UnmanagedType.IUnknown)] out object ppvSite);
|
||||
}
|
||||
|
||||
[ComImport]
|
||||
[Guid("00000114-0000-0000-C000-000000000046")]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
internal interface IOleWindow
|
||||
{
|
||||
void GetWindow(out nint phwnd);
|
||||
|
||||
void ContextSensitiveHelp([MarshalAs(UnmanagedType.Bool)] bool fEnterMode);
|
||||
}
|
||||
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("8895b1c6-b41f-4c1c-a562-0d564250836f")]
|
||||
internal interface IPreviewHandler
|
||||
{
|
||||
void SetWindow(nint hwnd, ref RECT rect);
|
||||
|
||||
void SetRect(ref RECT rect);
|
||||
|
||||
void DoPreview();
|
||||
|
||||
void Unload();
|
||||
|
||||
void SetFocus();
|
||||
|
||||
void QueryFocus(out nint phwnd);
|
||||
|
||||
[PreserveSig]
|
||||
HResult TranslateAccelerator(ref MSG pmsg);
|
||||
}
|
||||
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("fec87aaf-35f9-447a-adb7-20234491401a")]
|
||||
internal interface IPreviewHandlerFrame
|
||||
{
|
||||
void GetWindowContext(nint pinfo);
|
||||
|
||||
[PreserveSig]
|
||||
HResult TranslateAccelerator(ref MSG pmsg);
|
||||
};
|
||||
|
||||
[ComImport]
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("8327b13c-b63f-4b24-9b8a-d010dcc3f599")]
|
||||
internal interface IPreviewHandlerVisuals
|
||||
{
|
||||
void SetBackgroundColor(COLORREF color);
|
||||
|
||||
void SetFont(ref LogFont plf);
|
||||
|
||||
void SetTextColor(COLORREF color);
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct COLORREF
|
||||
{
|
||||
public uint Dword;
|
||||
|
||||
public Color Color => Color.FromArgb(
|
||||
(int)(0x000000FFU & Dword),
|
||||
(int)(0x0000FF00U & Dword) >> 8,
|
||||
(int)(0x00FF0000U & Dword) >> 16);
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct MSG
|
||||
{
|
||||
public nint hwnd;
|
||||
public int message;
|
||||
public nint wParam;
|
||||
public nint lParam;
|
||||
public int time;
|
||||
public int pt_x;
|
||||
public int pt_y;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
|
||||
internal class LogFont
|
||||
{
|
||||
internal int height;
|
||||
internal int width;
|
||||
internal int escapement;
|
||||
internal int orientation;
|
||||
internal int weight;
|
||||
internal byte italic;
|
||||
internal byte underline;
|
||||
internal byte strikeOut;
|
||||
internal byte charSet;
|
||||
internal byte outPrecision;
|
||||
internal byte clipPrecision;
|
||||
internal byte quality;
|
||||
internal byte pitchAndFamily;
|
||||
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
|
||||
internal string lfFaceName = string.Empty;
|
||||
}
|
||||
Reference in New Issue
Block a user