Program.cs
1 // Copyright (c) Microsoft Corporation 2 // The Microsoft Corporation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System; 6 using System.Runtime.InteropServices; 7 using System.Threading; 8 using ManagedCommon; 9 using Microsoft.CommandPalette.Extensions; 10 using Shmuelie.WinRTServer; 11 using Shmuelie.WinRTServer.CsWinRT; 12 13 namespace PowerToysExtension; 14 15 public class Program 16 { 17 [MTAThread] 18 public static void Main(string[] args) 19 { 20 try 21 { 22 // Initialize per-extension log under CmdPal/PowerToysExtension. 23 Logger.InitializeLogger("\\CmdPal\\PowerToysExtension\\Logs"); 24 Logger.LogInfo($"PowerToysExtension starting. Args=\"{string.Join(' ', args)}\" ProcArch={RuntimeInformation.ProcessArchitecture} OSArch={RuntimeInformation.OSArchitecture} BaseDir={AppContext.BaseDirectory}"); 25 } 26 catch 27 { 28 // Continue even if logging fails. 29 } 30 31 try 32 { 33 if (args.Length > 0 && args[0] == "-RegisterProcessAsComServer") 34 { 35 Logger.LogInfo("RegisterProcessAsComServer mode detected."); 36 ComServer server = new(); 37 ManualResetEvent extensionDisposedEvent = new(false); 38 try 39 { 40 PowerToysExtension extensionInstance = new(extensionDisposedEvent); 41 Logger.LogInfo("Registering extension via Shmuelie.WinRTServer."); 42 server.RegisterClass<PowerToysExtension, IExtension>(() => extensionInstance); 43 server.Start(); 44 Logger.LogInfo("Extension instance registered; waiting for disposal signal."); 45 46 extensionDisposedEvent.WaitOne(); 47 Logger.LogInfo("Extension disposed signal received; exiting server loop."); 48 } 49 finally 50 { 51 server.Stop(); 52 server.UnsafeDispose(); 53 } 54 } 55 else 56 { 57 Console.WriteLine("Not being launched as a Extension... exiting."); 58 Logger.LogInfo("Exited: not launched with -RegisterProcessAsComServer."); 59 } 60 } 61 catch (Exception ex) 62 { 63 Logger.LogError("Unhandled exception in PowerToysExtension.Main", ex); 64 throw; 65 } 66 finally 67 { 68 } 69 } 70 }