Skip to content

Commit 7179491

Browse files
committed
Update
1 parent adbdef5 commit 7179491

File tree

5 files changed

+31
-8
lines changed

5 files changed

+31
-8
lines changed

src/Files.App.CsWin32/ComPtr`1.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,9 @@ public readonly ComPtr<U> As<U>() where U : unmanaged, IComIID
5656
}
5757

5858
[MethodImpl(MethodImplOptions.AggressiveInlining)]
59-
public readonly HRESULT CoCreateInstance<U>(CLSCTX dwClsContext = CLSCTX.CLSCTX_LOCAL_SERVER)
59+
public readonly HRESULT CoCreateInstance(Guid* rclsid, IUnknown* pUnkOuter = null, CLSCTX dwClsContext = CLSCTX.CLSCTX_LOCAL_SERVER)
6060
{
61-
Guid iid = typeof(T).GUID, clsid = typeof(U).GUID;
62-
return PInvoke.CoCreateInstance(&clsid, null, dwClsContext, &iid, (void**)this.GetAddressOf());
61+
return PInvoke.CoCreateInstance(rclsid, pUnkOuter, dwClsContext, (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in T.Guid)), (void**)this.GetAddressOf());
6362
}
6463

6564
[MethodImpl(MethodImplOptions.AggressiveInlining)]

src/Files.App.CsWin32/ManualGuid.cs

+24
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,36 @@ public static unsafe partial class IID
2121

2222
[GuidRVAGen.Guid("947AAB5F-0A5C-4C13-B4D6-4BF7836FC9F8")]
2323
public static partial Guid* IID_IFileOperation { get; }
24+
25+
[GuidRVAGen.Guid("D57C7288-D4AD-4768-BE02-9D969532D960")]
26+
public static partial Guid* IID_IFileOpenDialog { get; }
27+
28+
[GuidRVAGen.Guid("84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB")]
29+
public static partial Guid* IID_IFileSaveDialog { get; }
30+
31+
[GuidRVAGen.Guid("B92B56A9-8B55-4E14-9A89-0199BBB6F93B")]
32+
public static partial Guid* IID_IDesktopWallpaper { get; }
33+
34+
[GuidRVAGen.Guid("2E941141-7F97-4756-BA1D-9DECDE894A3D")]
35+
public static partial Guid* IID_IApplicationActivationManager { get; }
2436
}
2537

2638
public static unsafe partial class CLSID
2739
{
2840
[GuidRVAGen.Guid("3AD05575-8857-4850-9277-11B85BDB8E09")]
2941
public static partial Guid* CLSID_FileOperation { get; }
42+
43+
[GuidRVAGen.Guid("DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7")]
44+
public static partial Guid* CLSID_FileOpenDialog { get; }
45+
46+
[GuidRVAGen.Guid("C0B4E2F3-BA21-4773-8DBA-335EC946EB8B")]
47+
public static partial Guid* CLSID_FileSaveDialog { get; }
48+
49+
[GuidRVAGen.Guid("C2CF3110-460E-4FC1-B9D0-8A1C0C9CC4BD")]
50+
public static partial Guid* CLSID_DesktopWallpaper { get; }
51+
52+
[GuidRVAGen.Guid("45BA127D-10A8-46EA-8AB7-56EA9078943C")]
53+
public static partial Guid* CLSID_ApplicationActivationManager { get; }
3054
}
3155

3256
public static unsafe partial class BHID

src/Files.App/Services/Windows/WindowsDialogService.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public unsafe bool Open_FileOpenDialog(nint hWnd, bool pickFoldersOnly, string[]
2323
try
2424
{
2525
using ComPtr<IFileOpenDialog> pDialog = default;
26-
HRESULT hr = pDialog.CoCreateInstance<FileOpenDialog>(CLSCTX.CLSCTX_INPROC_SERVER);
26+
HRESULT hr = pDialog.CoCreateInstance(CLSID.CLSID_FileOpenDialog, null, CLSCTX.CLSCTX_INPROC_SERVER);
2727

2828
if (filters.Length is not 0 && filters.Length % 2 is 0)
2929
{
@@ -93,7 +93,7 @@ public unsafe bool Open_FileSaveDialog(nint hWnd, bool pickFoldersOnly, string[]
9393
try
9494
{
9595
using ComPtr<IFileSaveDialog> pDialog = default;
96-
HRESULT hr = pDialog.CoCreateInstance<FileSaveDialog>(CLSCTX.CLSCTX_INPROC_SERVER);
96+
HRESULT hr = pDialog.CoCreateInstance(CLSID.CLSID_FileSaveDialog, null, CLSCTX.CLSCTX_INPROC_SERVER);
9797

9898
if (filters.Length is not 0 && filters.Length % 2 is 0)
9999
{

src/Files.App/Services/Windows/WindowsWallpaperService.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public unsafe void SetDesktopWallpaper(string szPath)
1919
{
2020
// Instantiate IDesktopWallpaper
2121
using ComPtr<IDesktopWallpaper> pDesktopWallpaper = default;
22-
HRESULT hr = pDesktopWallpaper.CoCreateInstance<DesktopWallpaper>().ThrowOnFailure();
22+
HRESULT hr = pDesktopWallpaper.CoCreateInstance(CLSID.CLSID_DesktopWallpaper);
2323

2424
// Get total count of all available monitors
2525
hr = pDesktopWallpaper.Get()->GetMonitorDevicePathCount(out var dwMonitorCount).ThrowOnFailure();
@@ -45,7 +45,7 @@ public unsafe void SetDesktopSlideshow(string[] aszPaths)
4545
{
4646
// Instantiate IDesktopWallpaper
4747
using ComPtr<IDesktopWallpaper> pDesktopWallpaper = default;
48-
HRESULT hr = pDesktopWallpaper.CoCreateInstance<DesktopWallpaper>().ThrowOnFailure();
48+
HRESULT hr = pDesktopWallpaper.CoCreateInstance(CLSID.CLSID_DesktopWallpaper);
4949

5050
uint dwCount = (uint)aszPaths.Length;
5151
ITEMIDLIST** ppItemIdList = stackalloc ITEMIDLIST*[aszPaths.Length];

src/Files.App/Utils/Shell/LaunchHelper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public static class LaunchHelper
1919
public unsafe static void LaunchSettings(string page)
2020
{
2121
using ComPtr<IApplicationActivationManager> pApplicationActivationManager = default;
22-
pApplicationActivationManager.CoCreateInstance<Shell32.ApplicationActivationManager>();
22+
pApplicationActivationManager.CoCreateInstance(CLSID.CLSID_ApplicationActivationManager);
2323

2424
pApplicationActivationManager.Get()->ActivateApplication(
2525
"windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel",

0 commit comments

Comments
 (0)