From 7af3c5febfe1877aba59f55bb31a756d32a69df0 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 19 Jul 2025 20:26:33 +0800 Subject: [PATCH 01/15] Upgrade NuGet dependency --- Flow.Launcher.Core/Flow.Launcher.Core.csproj | 6 +- Flow.Launcher.Core/packages.lock.json | 126 +-- .../Flow.Launcher.Infrastructure.csproj | 14 +- Flow.Launcher.Infrastructure/Win32Helper.cs | 10 +- .../packages.lock.json | 100 +-- .../Flow.Launcher.Plugin.csproj | 8 +- Flow.Launcher.Plugin/packages.lock.json | 52 +- Flow.Launcher.Test/Flow.Launcher.Test.csproj | 6 +- Flow.Launcher/Flow.Launcher.csproj | 15 +- Flow.Launcher/packages.lock.json | 723 +++++++++++------- ...low.Launcher.Plugin.BrowserBookmark.csproj | 2 +- .../Flow.Launcher.Plugin.Explorer.csproj | 5 +- .../Flow.Launcher.Plugin.ProcessKiller.csproj | 2 +- .../ProcessHelper.cs | 15 +- .../Flow.Launcher.Plugin.Program.csproj | 4 +- .../Programs/ShellLocalization.cs | 44 +- .../Flow.Launcher.Plugin.Sys.csproj | 2 +- 17 files changed, 684 insertions(+), 450 deletions(-) diff --git a/Flow.Launcher.Core/Flow.Launcher.Core.csproj b/Flow.Launcher.Core/Flow.Launcher.Core.csproj index b317934502e..5279500619f 100644 --- a/Flow.Launcher.Core/Flow.Launcher.Core.csproj +++ b/Flow.Launcher.Core/Flow.Launcher.Core.csproj @@ -55,12 +55,12 @@ - - + + - + diff --git a/Flow.Launcher.Core/packages.lock.json b/Flow.Launcher.Core/packages.lock.json index 0c513951b82..067c704af1e 100644 --- a/Flow.Launcher.Core/packages.lock.json +++ b/Flow.Launcher.Core/packages.lock.json @@ -13,15 +13,15 @@ }, "FSharp.Core": { "type": "Direct", - "requested": "[9.0.101, )", - "resolved": "9.0.101", - "contentHash": "3/YR1SDWFA+Ojx9HiBwND+0UR8ZWoeZfkhD0DWAPCDdr/YI+CyFkArmMGzGSyPXeYtjG0sy0emzfyNwjt7zhig==" + "requested": "[9.0.300, )", + "resolved": "9.0.300", + "contentHash": "TVt2J7RCE1KCS2IaONF+p8/KIZ1eHNbW+7qmKF6hGoD4tXl+o07ja1mPtFjMqRa5uHMFaTrGTPn/m945WnDLiQ==" }, "Meziantou.Framework.Win32.Jobs": { "type": "Direct", - "requested": "[3.4.0, )", - "resolved": "3.4.0", - "contentHash": "5GGLckfpwoC1jznInEYfK2INrHyD7K1RtwZJ98kNPKBU6jeu24i4zfgDGHHfb+eK3J+eFPAxo0aYcbUxNXIbNw==" + "requested": "[3.4.3, )", + "resolved": "3.4.3", + "contentHash": "REjInKnQ0OrhjjtSMPQtLtdURctCroB4L8Sd2gjTOYDysklvsdnrStx1tHS7uLv+fSyFF3aazZmo5Ka0v1oz/w==" }, "Microsoft.IO.RecyclableMemoryStream": { "type": "Direct", @@ -29,6 +29,12 @@ "resolved": "3.0.1", "contentHash": "s/s20YTVY9r9TPfTrN5g8zPF1YhwxyqO6PxUkrYTGI2B+OGPe9AdajWZrLhFqXIvqIW23fnUE4+ztrUWNU1+9g==" }, + "SemanticVersioning": { + "type": "Direct", + "requested": "[3.0.0, )", + "resolved": "3.0.0", + "contentHash": "RR+8GbPQ/gjDqov/1QN1OPoUlbUruNwcL3WjWCeLw+MY7+od/ENhnkYxCfAC6rQLIu3QifaJt3kPYyP3RumqMQ==" + }, "squirrel.windows": { "type": "Direct", "requested": "[1.5.2, )", @@ -42,16 +48,15 @@ }, "StreamJsonRpc": { "type": "Direct", - "requested": "[2.20.20, )", - "resolved": "2.20.20", - "contentHash": "gwG7KViLbSWS7EI0kYevinVmIga9wZNrpSY/FnWyC6DbdjKJ1xlv/FV1L9b0rLkVP8cGxfIMexdvo/+2W5eq6Q==", + "requested": "[2.22.11, )", + "resolved": "2.22.11", + "contentHash": "TQcqBFswLNpdSJANjhxZmIIe0Yl0kGqzjZ+uHLdhrkxntofvNu6C53XPEEYQ3Wkj8AorKumkuv/VMvTH4BHOZw==", "dependencies": { - "MessagePack": "2.5.187", - "Microsoft.VisualStudio.Threading": "17.10.48", - "Microsoft.VisualStudio.Threading.Analyzers": "17.10.48", + "MessagePack": "2.5.192", + "Microsoft.VisualStudio.Threading.Only": "17.13.61", "Microsoft.VisualStudio.Validation": "17.8.8", - "Nerdbank.Streams": "2.11.74", - "Newtonsoft.Json": "13.0.1", + "Nerdbank.Streams": "2.12.87", + "Newtonsoft.Json": "13.0.3", "System.IO.Pipelines": "8.0.0" } }, @@ -65,8 +70,8 @@ }, "BitFaster.Caching": { "type": "Transitive", - "resolved": "2.5.3", - "contentHash": "Vo/39qcam5Xe+DbyfH0JZyqPswdOoa7jv4PGtRJ6Wj8AU+aZ+TuJRlJcIe+MQjRTJwliI8k8VSQpN8sEoBIv2g==" + "resolved": "2.5.4", + "contentHash": "1QroTY1PVCZOSG9FnkkCrmCKk/+bZCgI/YXq376HnYwUDJ4Ho0EaV4YaA/5v5WYLnwIwIO7RZkdWbg9pxIpueQ==" }, "CommunityToolkit.Mvvm": { "type": "Transitive", @@ -85,36 +90,36 @@ }, "MemoryPack": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "cwCtED8y400vMWx/Vp0QCSeEpVFjDU4JwF52VX9WTaqVERUvNqjG9n6osFlmFuytegyXnHvYEu1qRJ8rv/rkbg==", + "resolved": "1.21.4", + "contentHash": "wy3JTBNBsO8LfQcBvvYsWr3lm2Oakolrfu0UQ3oSJSEiD+7ye0GUhYTaXuYYBowqsXBXWD9gf2218ae0JRiYVQ==", "dependencies": { - "MemoryPack.Core": "1.21.3", - "MemoryPack.Generator": "1.21.3" + "MemoryPack.Core": "1.21.4", + "MemoryPack.Generator": "1.21.4" } }, "MemoryPack.Core": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "ajrYoBWT2aKeH4tlY8q/1C9qK1R/NK+7FkuVOX58ebOSxkABoFTqCR7W+Zk2rakUHZiEgNdRqO67hiRZPq6fLA==" + "resolved": "1.21.4", + "contentHash": "6RszGorZ0ejNmp37ZcboPBMvvPCuNW2jlrdQfcs/lMzE5b3pmPF6hsm/laDc34hRlbAST1ZxaX/DvYu2DF5sBQ==" }, "MemoryPack.Generator": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "hYU0TAIarDKnbkNIWvb7P4zBUL+CTahkuNkczsKvycSMR5kiwQ4IfLexywNKX3s05Izp4gzDSPbueepNWZRpWA==" + "resolved": "1.21.4", + "contentHash": "g14EsSS85yn0lHTi0J9ivqlZMf09A2iI51fmI+0KkzIzyCbWOBWPi5mdaY7YWmXprk12aYh9u/qfWHQUYthlwg==" }, "MessagePack": { "type": "Transitive", - "resolved": "2.5.187", - "contentHash": "uW4j8m4Nc+2Mk5n6arOChavJ9bLjkis0qWASOj2h2OwmfINuzYv+mjCHUymrYhmyyKTu3N+ObtTXAY4uQ7jIhg==", + "resolved": "2.5.192", + "contentHash": "Jtle5MaFeIFkdXtxQeL9Tu2Y3HsAQGoSntOzrn6Br/jrl6c8QmG22GEioT5HBtZJR0zw0s46OnKU8ei2M3QifA==", "dependencies": { - "MessagePack.Annotations": "2.5.187", + "MessagePack.Annotations": "2.5.192", "Microsoft.NET.StringTools": "17.6.3" } }, "MessagePack.Annotations": { "type": "Transitive", - "resolved": "2.5.187", - "contentHash": "/IvvMMS8opvlHjEJ/fR2Cal4Co726Kj77Z8KiohFhuHfLHHmb9uUxW5+tSCL4ToKFfkQlrS3HD638mRq83ySqA==" + "resolved": "2.5.192", + "contentHash": "jaJuwcgovWIZ8Zysdyf3b7b34/BrADw4v82GaEZymUhDd3ScMPrYd/cttekeDteJJPXseJxp04yTIcxiVUjTWg==" }, "Microsoft.NET.StringTools": { "type": "Transitive", @@ -123,17 +128,26 @@ }, "Microsoft.VisualStudio.Threading": { "type": "Transitive", - "resolved": "17.12.19", - "contentHash": "eLiGMkMYyaSguqHs3lsrFxy3tAWSLuPEL2pIWRcADMDVAs2xqm3dr1d9QYjiEusTgiClF9KD6OB2NdZP72Oy0Q==", + "resolved": "17.14.15", + "contentHash": "1DrCusT3xNLSlaJg77BsUSAzrhjdZBAvvsS0PMzyPM+fGais6SnISOhqdZQop8VVMIBLsYm2gyF9W7THjgavwA==", "dependencies": { - "Microsoft.VisualStudio.Threading.Analyzers": "17.12.19", + "Microsoft.VisualStudio.Threading.Analyzers": "17.14.15", + "Microsoft.VisualStudio.Threading.Only": "17.14.15", "Microsoft.VisualStudio.Validation": "17.8.8" } }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Transitive", - "resolved": "17.12.19", - "contentHash": "v3IYeedjoktvZ+GqYmLudxZJngmf/YWIxNT2Uy6QMMN19cvw+nkWoip1Gr1RtnFkUo1MPUVMis4C8Kj8d8DpSQ==" + "resolved": "17.14.15", + "contentHash": "mXQPJsbuUD2ydq4/ffd8h8tSOFCXec+2xJOVNCvXjuMOq/+5EKHq3D2m2MC2+nUaXeFMSt66VS/J4HdKBixgcw==" + }, + "Microsoft.VisualStudio.Threading.Only": { + "type": "Transitive", + "resolved": "17.14.15", + "contentHash": "NqONyw1RXyj9P3k5e1uU2k9kc1ptwuU5NJQzG+MPq7vQVHUzBY8HLuJf/N2Rw5H/myD96CVxziDxmjawPuzntw==", + "dependencies": { + "Microsoft.VisualStudio.Validation": "17.8.8" + } }, "Microsoft.VisualStudio.Validation": { "type": "Transitive", @@ -142,8 +156,8 @@ }, "Microsoft.Win32.SystemEvents": { "type": "Transitive", - "resolved": "9.0.2", - "contentHash": "5BkGZ6mHp2dHydR29sb0fDfAuqkv30AHtTih8wMzvPZysOmBFvHfnkR2w3tsc0pSiIg8ZoKyefJXWy9r3pBh0w==" + "resolved": "9.0.7", + "contentHash": "lFGY2aGgmMREPJEfOmZcA6v0CLjWVpcfNHRgqYMoSQhy80+GxhYqdW5xe+DCLrVqE1M7/0RpOkIo49/KH/cd/A==" }, "Mono.Cecil": { "type": "Transitive", @@ -152,31 +166,28 @@ }, "Nerdbank.Streams": { "type": "Transitive", - "resolved": "2.11.74", - "contentHash": "r4G7uHHfoo8LCilPOdtf2C+Q5ymHOAXtciT4ZtB2xRlAvv4gPkWBYNAijFblStv3+uidp81j5DP11jMZl4BfJw==", + "resolved": "2.12.87", + "contentHash": "oDKOeKZ865I5X8qmU3IXMyrAnssYEiYWTobPGdrqubN3RtTzEHIv+D6fwhdcfrdhPJzHjCkK/ORztR/IsnmA6g==", "dependencies": { - "Microsoft.VisualStudio.Threading": "17.10.48", + "Microsoft.VisualStudio.Threading.Only": "17.13.61", "Microsoft.VisualStudio.Validation": "17.8.8", "System.IO.Pipelines": "8.0.0" } }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.1", - "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "NLog": { "type": "Transitive", "resolved": "4.7.10", "contentHash": "rcegW7kYOCjl7wX0SzsqpPBqnJ51JKi1WkYb6QBVX0Wc5IgH19Pv4t/co+T0s06OS0Ne44xgkY/mHg0PdrmJow==" }, - "PropertyChanged.Fody": { + "SharpVectors.Wpf": { "type": "Transitive", - "resolved": "3.4.0", - "contentHash": "IAZyq0uolKo2WYm4mjx+q7A8fSGFT0x2e1s3y+ODn4JI0kqTDoo9GF2tdaypUzRFJZfdMxfC5HZW9QzdJLtOnA==", - "dependencies": { - "Fody": "6.5.1" - } + "resolved": "1.8.4.2", + "contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng==" }, "Splat": { "type": "Transitive", @@ -185,10 +196,10 @@ }, "System.Drawing.Common": { "type": "Transitive", - "resolved": "9.0.2", - "contentHash": "JU947wzf8JbBS16Y5EIZzAlyQU+k68D7LRx6y03s2wlhlvLqkt/8uPBrjv2hJnnaJKbdb0GhQ3JZsfYXhrRjyg==", + "resolved": "9.0.7", + "contentHash": "1k/Pk7hcM3vP2tfIRRS2ECCCN7ya+hvocsM1JMc4ZDCU6qw7yOuUmqmCDfgXZ4Q4FS6jass2EAai5ByKodDi0g==", "dependencies": { - "Microsoft.Win32.SystemEvents": "9.0.2" + "Microsoft.Win32.SystemEvents": "9.0.7" } }, "System.IO.Pipelines": { @@ -215,22 +226,21 @@ "type": "Project", "dependencies": { "Ben.Demystifier": "[0.4.1, )", - "BitFaster.Caching": "[2.5.3, )", + "BitFaster.Caching": "[2.5.4, )", "CommunityToolkit.Mvvm": "[8.4.0, )", - "Flow.Launcher.Plugin": "[4.4.0, )", - "MemoryPack": "[1.21.3, )", - "Microsoft.VisualStudio.Threading": "[17.12.19, )", + "Flow.Launcher.Plugin": "[4.7.0, )", + "MemoryPack": "[1.21.4, )", + "Microsoft.VisualStudio.Threading": "[17.14.15, )", "NLog": "[4.7.10, )", - "PropertyChanged.Fody": "[3.4.0, )", - "System.Drawing.Common": "[9.0.2, )", + "SharpVectors.Wpf": "[1.8.4.2, )", + "System.Drawing.Common": "[9.0.7, )", "ToolGood.Words.Pinyin": "[3.0.1.4, )" } }, "flow.launcher.plugin": { "type": "Project", "dependencies": { - "JetBrains.Annotations": "[2024.3.0, )", - "PropertyChanged.Fody": "[3.4.0, )" + "JetBrains.Annotations": "[2024.3.0, )" } } } diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj index be9e4e0f9a9..dd9a305a299 100644 --- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj +++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj @@ -1,4 +1,4 @@ - + net9.0-windows @@ -54,24 +54,24 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all - + diff --git a/Flow.Launcher.Infrastructure/Win32Helper.cs b/Flow.Launcher.Infrastructure/Win32Helper.cs index 32ed3113738..57c41181bdd 100644 --- a/Flow.Launcher.Infrastructure/Win32Helper.cs +++ b/Flow.Launcher.Infrastructure/Win32Helper.cs @@ -118,9 +118,9 @@ public static unsafe string GetWallpaperPath() #region Window Foreground - public static nint GetForegroundWindow() + public static unsafe nint GetForegroundWindow() { - return PInvoke.GetForegroundWindow().Value; + return (nint)PInvoke.GetForegroundWindow().Value; } public static bool SetForegroundWindow(Window window) @@ -279,7 +279,7 @@ public static unsafe bool IsForegroundWindowFullscreen() { var hWndDesktop = PInvoke.FindWindowEx(hWnd, HWND.Null, "SHELLDLL_DefView", null); hWndDesktop = PInvoke.FindWindowEx(hWndDesktop, HWND.Null, "SysListView32", "FolderView"); - if (hWndDesktop.Value != IntPtr.Zero) + if (hWndDesktop != HWND.Null) { return false; } @@ -480,7 +480,7 @@ public static unsafe void SwitchToEnglishKeyboardLayout(bool backupPrevious) /// Restores the previously backed-up keyboard layout. /// If it wasn't backed up or has already been restored, this method does nothing. /// - public static void RestorePreviousKeyboardLayout() + public unsafe static void RestorePreviousKeyboardLayout() { if (_previousLayout == HKL.Null) return; @@ -491,7 +491,7 @@ public static void RestorePreviousKeyboardLayout() hwnd, PInvoke.WM_INPUTLANGCHANGEREQUEST, PInvoke.INPUTLANGCHANGE_FORWARD, - _previousLayout.Value + new LPARAM((nint)_previousLayout.Value) ); _previousLayout = HKL.Null; diff --git a/Flow.Launcher.Infrastructure/packages.lock.json b/Flow.Launcher.Infrastructure/packages.lock.json index f38f91ef97c..47c87f1ca87 100644 --- a/Flow.Launcher.Infrastructure/packages.lock.json +++ b/Flow.Launcher.Infrastructure/packages.lock.json @@ -13,9 +13,9 @@ }, "BitFaster.Caching": { "type": "Direct", - "requested": "[2.5.3, )", - "resolved": "2.5.3", - "contentHash": "Vo/39qcam5Xe+DbyfH0JZyqPswdOoa7jv4PGtRJ6Wj8AU+aZ+TuJRlJcIe+MQjRTJwliI8k8VSQpN8sEoBIv2g==" + "requested": "[2.5.4, )", + "resolved": "2.5.4", + "contentHash": "1QroTY1PVCZOSG9FnkkCrmCKk/+bZCgI/YXq376HnYwUDJ4Ho0EaV4YaA/5v5WYLnwIwIO7RZkdWbg9pxIpueQ==" }, "CommunityToolkit.Mvvm": { "type": "Direct", @@ -25,39 +25,40 @@ }, "Fody": { "type": "Direct", - "requested": "[6.5.5, )", - "resolved": "6.5.5", - "contentHash": "Krca41L/PDva1VsmDec5n52cQZxQAQp/bsHdzsNi8iLLI0lqKL94fNIkNaC8tVolUkCyWsbzvxfxJCeD2789fA==" + "requested": "[6.9.2, )", + "resolved": "6.9.2", + "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w==" }, "MemoryPack": { "type": "Direct", - "requested": "[1.21.3, )", - "resolved": "1.21.3", - "contentHash": "cwCtED8y400vMWx/Vp0QCSeEpVFjDU4JwF52VX9WTaqVERUvNqjG9n6osFlmFuytegyXnHvYEu1qRJ8rv/rkbg==", + "requested": "[1.21.4, )", + "resolved": "1.21.4", + "contentHash": "wy3JTBNBsO8LfQcBvvYsWr3lm2Oakolrfu0UQ3oSJSEiD+7ye0GUhYTaXuYYBowqsXBXWD9gf2218ae0JRiYVQ==", "dependencies": { - "MemoryPack.Core": "1.21.3", - "MemoryPack.Generator": "1.21.3" + "MemoryPack.Core": "1.21.4", + "MemoryPack.Generator": "1.21.4" } }, "Microsoft.VisualStudio.Threading": { "type": "Direct", - "requested": "[17.12.19, )", - "resolved": "17.12.19", - "contentHash": "eLiGMkMYyaSguqHs3lsrFxy3tAWSLuPEL2pIWRcADMDVAs2xqm3dr1d9QYjiEusTgiClF9KD6OB2NdZP72Oy0Q==", + "requested": "[17.14.15, )", + "resolved": "17.14.15", + "contentHash": "1DrCusT3xNLSlaJg77BsUSAzrhjdZBAvvsS0PMzyPM+fGais6SnISOhqdZQop8VVMIBLsYm2gyF9W7THjgavwA==", "dependencies": { - "Microsoft.VisualStudio.Threading.Analyzers": "17.12.19", + "Microsoft.VisualStudio.Threading.Analyzers": "17.14.15", + "Microsoft.VisualStudio.Threading.Only": "17.14.15", "Microsoft.VisualStudio.Validation": "17.8.8" } }, "Microsoft.Windows.CsWin32": { "type": "Direct", - "requested": "[0.3.106, )", - "resolved": "0.3.106", - "contentHash": "Mx5fK7uN6fwLR4wUghs6//HonAnwPBNmC2oonyJVhCUlHS/r6SUS3NkBc3+gaQiv+0/9bqdj1oSCKQFkNI+21Q==", + "requested": "[0.3.183, )", + "resolved": "0.3.183", + "contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==", "dependencies": { "Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha", - "Microsoft.Windows.SDK.Win32Metadata": "60.0.34-preview", - "Microsoft.Windows.WDK.Win32Metadata": "0.11.4-experimental" + "Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview", + "Microsoft.Windows.WDK.Win32Metadata": "0.12.8-experimental" } }, "NLog": { @@ -68,20 +69,26 @@ }, "PropertyChanged.Fody": { "type": "Direct", - "requested": "[3.4.0, )", - "resolved": "3.4.0", - "contentHash": "IAZyq0uolKo2WYm4mjx+q7A8fSGFT0x2e1s3y+ODn4JI0kqTDoo9GF2tdaypUzRFJZfdMxfC5HZW9QzdJLtOnA==", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "6v+f9cI8YjnZH2WBHuOqWEAo8DFFNGFIdU8xD3AsL6fhV6Y8oAmVWd7XKk49t8DpeUBwhR/X+97+6Epvek0Y3A==", "dependencies": { - "Fody": "6.5.1" + "Fody": "6.6.4" } }, + "SharpVectors.Wpf": { + "type": "Direct", + "requested": "[1.8.4.2, )", + "resolved": "1.8.4.2", + "contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng==" + }, "System.Drawing.Common": { "type": "Direct", - "requested": "[9.0.2, )", - "resolved": "9.0.2", - "contentHash": "JU947wzf8JbBS16Y5EIZzAlyQU+k68D7LRx6y03s2wlhlvLqkt/8uPBrjv2hJnnaJKbdb0GhQ3JZsfYXhrRjyg==", + "requested": "[9.0.7, )", + "resolved": "9.0.7", + "contentHash": "1k/Pk7hcM3vP2tfIRRS2ECCCN7ya+hvocsM1JMc4ZDCU6qw7yOuUmqmCDfgXZ4Q4FS6jass2EAai5ByKodDi0g==", "dependencies": { - "Microsoft.Win32.SystemEvents": "9.0.2" + "Microsoft.Win32.SystemEvents": "9.0.7" } }, "ToolGood.Words.Pinyin": { @@ -97,18 +104,26 @@ }, "MemoryPack.Core": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "ajrYoBWT2aKeH4tlY8q/1C9qK1R/NK+7FkuVOX58ebOSxkABoFTqCR7W+Zk2rakUHZiEgNdRqO67hiRZPq6fLA==" + "resolved": "1.21.4", + "contentHash": "6RszGorZ0ejNmp37ZcboPBMvvPCuNW2jlrdQfcs/lMzE5b3pmPF6hsm/laDc34hRlbAST1ZxaX/DvYu2DF5sBQ==" }, "MemoryPack.Generator": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "hYU0TAIarDKnbkNIWvb7P4zBUL+CTahkuNkczsKvycSMR5kiwQ4IfLexywNKX3s05Izp4gzDSPbueepNWZRpWA==" + "resolved": "1.21.4", + "contentHash": "g14EsSS85yn0lHTi0J9ivqlZMf09A2iI51fmI+0KkzIzyCbWOBWPi5mdaY7YWmXprk12aYh9u/qfWHQUYthlwg==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Transitive", - "resolved": "17.12.19", - "contentHash": "v3IYeedjoktvZ+GqYmLudxZJngmf/YWIxNT2Uy6QMMN19cvw+nkWoip1Gr1RtnFkUo1MPUVMis4C8Kj8d8DpSQ==" + "resolved": "17.14.15", + "contentHash": "mXQPJsbuUD2ydq4/ffd8h8tSOFCXec+2xJOVNCvXjuMOq/+5EKHq3D2m2MC2+nUaXeFMSt66VS/J4HdKBixgcw==" + }, + "Microsoft.VisualStudio.Threading.Only": { + "type": "Transitive", + "resolved": "17.14.15", + "contentHash": "NqONyw1RXyj9P3k5e1uU2k9kc1ptwuU5NJQzG+MPq7vQVHUzBY8HLuJf/N2Rw5H/myD96CVxziDxmjawPuzntw==", + "dependencies": { + "Microsoft.VisualStudio.Validation": "17.8.8" + } }, "Microsoft.VisualStudio.Validation": { "type": "Transitive", @@ -117,8 +132,8 @@ }, "Microsoft.Win32.SystemEvents": { "type": "Transitive", - "resolved": "9.0.2", - "contentHash": "5BkGZ6mHp2dHydR29sb0fDfAuqkv30AHtTih8wMzvPZysOmBFvHfnkR2w3tsc0pSiIg8ZoKyefJXWy9r3pBh0w==" + "resolved": "9.0.7", + "contentHash": "lFGY2aGgmMREPJEfOmZcA6v0CLjWVpcfNHRgqYMoSQhy80+GxhYqdW5xe+DCLrVqE1M7/0RpOkIo49/KH/cd/A==" }, "Microsoft.Windows.SDK.Win32Docs": { "type": "Transitive", @@ -127,15 +142,15 @@ }, "Microsoft.Windows.SDK.Win32Metadata": { "type": "Transitive", - "resolved": "60.0.34-preview", - "contentHash": "TA3DUNi4CTeo+ItTXBnGZFt2159XOGSl0UOlG5vjDj4WHqZjhwYyyUnzOtrbCERiSaP2Hzg7otJNWwOSZgutyA==" + "resolved": "61.0.15-preview", + "contentHash": "cysex3dazKtCPALCluC2XX3f5Aedy9H2pw5jb+TW5uas2rkem1Z7FRnbUrg2vKx0pk0Qz+4EJNr37HdYTEcvEQ==" }, "Microsoft.Windows.WDK.Win32Metadata": { "type": "Transitive", - "resolved": "0.11.4-experimental", - "contentHash": "bf5MCmUyZf0gBlYQjx9UpRAZWBkRndyt9XicR+UNLvAUAFTZQbu6YaX/sNKZlR98Grn0gydfh/yT4I3vc0AIQA==", + "resolved": "0.12.8-experimental", + "contentHash": "3n8R44/Z96Ly+ty4eYVJfESqbzvpw96lRLs3zOzyDmr1x1Kw7FNn5CyE416q+bZQV3e1HRuMUvyegMeRE/WedA==", "dependencies": { - "Microsoft.Windows.SDK.Win32Metadata": "60.0.34-preview" + "Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview" } }, "System.Reflection.Metadata": { @@ -146,8 +161,7 @@ "flow.launcher.plugin": { "type": "Project", "dependencies": { - "JetBrains.Annotations": "[2024.3.0, )", - "PropertyChanged.Fody": "[3.4.0, )" + "JetBrains.Annotations": "[2024.3.0, )" } } } diff --git a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj index a4ef39ac3bc..eee8d5f4ea7 100644 --- a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj +++ b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj @@ -68,17 +68,17 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all diff --git a/Flow.Launcher.Plugin/packages.lock.json b/Flow.Launcher.Plugin/packages.lock.json index 6cdf96e0719..af835c59870 100644 --- a/Flow.Launcher.Plugin/packages.lock.json +++ b/Flow.Launcher.Plugin/packages.lock.json @@ -4,9 +4,9 @@ "net9.0-windows7.0": { "Fody": { "type": "Direct", - "requested": "[6.5.4, )", - "resolved": "6.5.4", - "contentHash": "GXZuti428IZctfby10xkMbWLCibcb6s29I/psLbBoO2vHJI5eTNVybnlV/Wi1tlIu9GG0bgW/PQwMH+MCldHxw==" + "requested": "[6.9.2, )", + "resolved": "6.9.2", + "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w==" }, "JetBrains.Annotations": { "type": "Direct", @@ -16,43 +16,43 @@ }, "Microsoft.SourceLink.GitHub": { "type": "Direct", - "requested": "[1.1.1, )", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" } }, "Microsoft.Windows.CsWin32": { "type": "Direct", - "requested": "[0.3.106, )", - "resolved": "0.3.106", - "contentHash": "Mx5fK7uN6fwLR4wUghs6//HonAnwPBNmC2oonyJVhCUlHS/r6SUS3NkBc3+gaQiv+0/9bqdj1oSCKQFkNI+21Q==", + "requested": "[0.3.183, )", + "resolved": "0.3.183", + "contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==", "dependencies": { "Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha", - "Microsoft.Windows.SDK.Win32Metadata": "60.0.34-preview", - "Microsoft.Windows.WDK.Win32Metadata": "0.11.4-experimental" + "Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview", + "Microsoft.Windows.WDK.Win32Metadata": "0.12.8-experimental" } }, "PropertyChanged.Fody": { "type": "Direct", - "requested": "[3.4.0, )", - "resolved": "3.4.0", - "contentHash": "IAZyq0uolKo2WYm4mjx+q7A8fSGFT0x2e1s3y+ODn4JI0kqTDoo9GF2tdaypUzRFJZfdMxfC5HZW9QzdJLtOnA==", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "6v+f9cI8YjnZH2WBHuOqWEAo8DFFNGFIdU8xD3AsL6fhV6Y8oAmVWd7XKk49t8DpeUBwhR/X+97+6Epvek0Y3A==", "dependencies": { - "Fody": "6.5.1" + "Fody": "6.6.4" } }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, "Microsoft.Windows.SDK.Win32Docs": { "type": "Transitive", @@ -61,15 +61,15 @@ }, "Microsoft.Windows.SDK.Win32Metadata": { "type": "Transitive", - "resolved": "60.0.34-preview", - "contentHash": "TA3DUNi4CTeo+ItTXBnGZFt2159XOGSl0UOlG5vjDj4WHqZjhwYyyUnzOtrbCERiSaP2Hzg7otJNWwOSZgutyA==" + "resolved": "61.0.15-preview", + "contentHash": "cysex3dazKtCPALCluC2XX3f5Aedy9H2pw5jb+TW5uas2rkem1Z7FRnbUrg2vKx0pk0Qz+4EJNr37HdYTEcvEQ==" }, "Microsoft.Windows.WDK.Win32Metadata": { "type": "Transitive", - "resolved": "0.11.4-experimental", - "contentHash": "bf5MCmUyZf0gBlYQjx9UpRAZWBkRndyt9XicR+UNLvAUAFTZQbu6YaX/sNKZlR98Grn0gydfh/yT4I3vc0AIQA==", + "resolved": "0.12.8-experimental", + "contentHash": "3n8R44/Z96Ly+ty4eYVJfESqbzvpw96lRLs3zOzyDmr1x1Kw7FNn5CyE416q+bZQV3e1HRuMUvyegMeRE/WedA==", "dependencies": { - "Microsoft.Windows.SDK.Win32Metadata": "60.0.34-preview" + "Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview" } } } diff --git a/Flow.Launcher.Test/Flow.Launcher.Test.csproj b/Flow.Launcher.Test/Flow.Launcher.Test.csproj index f04a9dcc94f..33479c5a062 100644 --- a/Flow.Launcher.Test/Flow.Launcher.Test.csproj +++ b/Flow.Launcher.Test/Flow.Launcher.Test.csproj @@ -48,13 +48,13 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + \ No newline at end of file diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index f438859f20e..d1405583142 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -86,7 +86,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -96,20 +96,19 @@ - - - + + - + - + all - - + + diff --git a/Flow.Launcher/packages.lock.json b/Flow.Launcher/packages.lock.json index 0170650443a..344f06d3a67 100644 --- a/Flow.Launcher/packages.lock.json +++ b/Flow.Launcher/packages.lock.json @@ -16,9 +16,9 @@ }, "Fody": { "type": "Direct", - "requested": "[6.5.4, )", - "resolved": "6.5.4", - "contentHash": "GXZuti428IZctfby10xkMbWLCibcb6s29I/psLbBoO2vHJI5eTNVybnlV/Wi1tlIu9GG0bgW/PQwMH+MCldHxw==" + "requested": "[6.9.2, )", + "resolved": "6.9.2", + "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w==" }, "InputSimulator": { "type": "Direct", @@ -26,54 +26,92 @@ "resolved": "1.0.4", "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA==" }, - "Jack251970.TaskScheduler": { + "MdXaml": { "type": "Direct", - "requested": "[2.12.1, )", - "resolved": "2.12.1", - "contentHash": "+epAtsLMugiznJCNRYCYB6eBcr+bx+CVlwPWMprO5CbnNkWu9mlSV8XN5BQJrGYwmlAtlGfZA3p3PcFFlrgR6A==", + "requested": "[1.27.0, )", + "resolved": "1.27.0", + "contentHash": "VWhqhCeKVkJe8vkPmXuGZlRX01WDrTugOLeUvJn18jH/8DrGGVBvtgIlJoELHD2f1DiEWqF3lxxjV55vnzE7Tg==", "dependencies": { - "Microsoft.Win32.Registry": "5.0.0", - "System.Diagnostics.EventLog": "8.0.0", - "System.Security.AccessControl": "6.0.1" + "AvalonEdit": "6.3.0.90", + "MdXaml.Plugins": "1.27.0" + } + }, + "MdXaml.AnimatedGif": { + "type": "Direct", + "requested": "[1.27.0, )", + "resolved": "1.27.0", + "contentHash": "Xrr9IgyAfqDbruqCp2Wxzthbc87QMvMR2YXQsGDyacLtowleefP1Jt3cesZCbI44YcZTGjyJNIkvRAyzzlgsOQ==", + "dependencies": { + "MdXaml.Plugins": "1.27.0", + "WpfAnimatedGif": "2.0.2" + } + }, + "MdXaml.Html": { + "type": "Direct", + "requested": "[1.27.0, )", + "resolved": "1.27.0", + "contentHash": "3AI0g7EwsTuvhhNd9bjb3J7v5aXFk1dLaf1CNbLjkcZs/MwnEUHNgzF+sLQBYYVdG2DqfV1BsuFoPWSG7IdHvg==", + "dependencies": { + "AvalonEdit": "6.3.0.90", + "HtmlAgilityPack": "1.11.42", + "MdXaml": "1.27.0", + "MdXaml.Plugins": "1.27.0" + } + }, + "MdXaml.Plugins": { + "type": "Direct", + "requested": "[1.27.0, )", + "resolved": "1.27.0", + "contentHash": "We7LtBdoukRg9mqTfa1f5n8z/GQPMKBRj3URk9DiMuqzIHkW1lTgK5njVPSScxsRt4YzW22423tSnLWNm2MJKg==" + }, + "MdXaml.Svg": { + "type": "Direct", + "requested": "[1.27.0, )", + "resolved": "1.27.0", + "contentHash": "zHtzcQrEVDoTDRvxFAccAIQG3UHCUW2cdWrGCg9yfT6344hhqc6d9t/93kBqQ6j+f580YeevtMeraz9PWmzpfw==", + "dependencies": { + "MdXaml": "1.27.0", + "MdXaml.Plugins": "1.27.0", + "Svg": "3.0.84" } }, "Microsoft.Extensions.DependencyInjection": { "type": "Direct", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==", + "requested": "[9.0.7, )", + "resolved": "9.0.7", + "contentHash": "i05AYA91vgq0as84ROVCyltD2gnxaba/f1Qw2rG7mUsS0gv8cPTr1Gm7jPQHq7JTr4MJoQUcanLVs16tIOUJaQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7" } }, "Microsoft.Extensions.Hosting": { "type": "Direct", - "requested": "[7.0.1, )", - "resolved": "7.0.1", - "contentHash": "aoeMou6XSW84wiqd895OdaGyO9PfH6nohQJ0XBcshRDafbdIU6PQIVl8TpOCssPYq3ciRseP5064hbFyCR9J9w==", - "dependencies": { - "Microsoft.Extensions.Configuration": "7.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.Configuration.Binder": "7.0.3", - "Microsoft.Extensions.Configuration.CommandLine": "7.0.0", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "7.0.0", - "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", - "Microsoft.Extensions.Configuration.Json": "7.0.0", - "Microsoft.Extensions.Configuration.UserSecrets": "7.0.0", - "Microsoft.Extensions.DependencyInjection": "7.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", - "Microsoft.Extensions.FileProviders.Physical": "7.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging": "7.0.0", - "Microsoft.Extensions.Logging.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging.Configuration": "7.0.0", - "Microsoft.Extensions.Logging.Console": "7.0.0", - "Microsoft.Extensions.Logging.Debug": "7.0.0", - "Microsoft.Extensions.Logging.EventLog": "7.0.0", - "Microsoft.Extensions.Logging.EventSource": "7.0.0", - "Microsoft.Extensions.Options": "7.0.1", - "System.Diagnostics.DiagnosticSource": "7.0.1" + "requested": "[9.0.7, )", + "resolved": "9.0.7", + "contentHash": "Dkv55VfitwJjPUk9mFHxT9MJAd8su7eJNaCHhBU/Y9xFqw3ZNHwrpeptXeaXiaPtfQq+alMmawIz1Impk5pHkQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "9.0.7", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.Configuration.Binder": "9.0.7", + "Microsoft.Extensions.Configuration.CommandLine": "9.0.7", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "9.0.7", + "Microsoft.Extensions.Configuration.FileExtensions": "9.0.7", + "Microsoft.Extensions.Configuration.Json": "9.0.7", + "Microsoft.Extensions.Configuration.UserSecrets": "9.0.7", + "Microsoft.Extensions.DependencyInjection": "9.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Diagnostics": "9.0.7", + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7", + "Microsoft.Extensions.FileProviders.Physical": "9.0.7", + "Microsoft.Extensions.Hosting.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging.Configuration": "9.0.7", + "Microsoft.Extensions.Logging.Console": "9.0.7", + "Microsoft.Extensions.Logging.Debug": "9.0.7", + "Microsoft.Extensions.Logging.EventLog": "9.0.7", + "Microsoft.Extensions.Logging.EventSource": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7" } }, "Microsoft.Toolkit.Uwp.Notifications": { @@ -88,22 +126,11 @@ "System.ValueTuple": "4.5.0" } }, - "Microsoft.Windows.CsWin32": { - "type": "Direct", - "requested": "[0.3.106, )", - "resolved": "0.3.106", - "contentHash": "Mx5fK7uN6fwLR4wUghs6//HonAnwPBNmC2oonyJVhCUlHS/r6SUS3NkBc3+gaQiv+0/9bqdj1oSCKQFkNI+21Q==", - "dependencies": { - "Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha", - "Microsoft.Windows.SDK.Win32Metadata": "60.0.34-preview", - "Microsoft.Windows.WDK.Win32Metadata": "0.11.4-experimental" - } - }, "ModernWpfUI": { "type": "Direct", - "requested": "[0.9.4, )", - "resolved": "0.9.4", - "contentHash": "HJ07Be9KOiGKGcMLz/AwY+84h3yGHRPuYpYXCE6h1yPtaFwGMWfanZ70jX7W5XWx8+Qk1vGox+WGKgxxsy6EHw==" + "requested": "[0.9.5, )", + "resolved": "0.9.5", + "contentHash": "Y3XkH0wmzDUdbFglykkIIRVPVsmIqN+rKoLZFaMDh9yMG39AJ6VannEmRCzjVLn7f8pg4SqBWC0PGT49BqTACA==" }, "NHotkey.Wpf": { "type": "Direct", @@ -116,11 +143,11 @@ }, "PropertyChanged.Fody": { "type": "Direct", - "requested": "[3.4.0, )", - "resolved": "3.4.0", - "contentHash": "IAZyq0uolKo2WYm4mjx+q7A8fSGFT0x2e1s3y+ODn4JI0kqTDoo9GF2tdaypUzRFJZfdMxfC5HZW9QzdJLtOnA==", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "6v+f9cI8YjnZH2WBHuOqWEAo8DFFNGFIdU8xD3AsL6fhV6Y8oAmVWd7XKk49t8DpeUBwhR/X+97+6Epvek0Y3A==", "dependencies": { - "Fody": "6.5.1" + "Fody": "6.6.4" } }, "SemanticVersioning": { @@ -129,11 +156,27 @@ "resolved": "3.0.0", "contentHash": "RR+8GbPQ/gjDqov/1QN1OPoUlbUruNwcL3WjWCeLw+MY7+od/ENhnkYxCfAC6rQLIu3QifaJt3kPYyP3RumqMQ==" }, + "TaskScheduler": { + "type": "Direct", + "requested": "[2.12.2, )", + "resolved": "2.12.2", + "contentHash": "glpAb3VrwfdAofp6PIyAzL0ZeTV7XUJ8muu0oZoTeyU5jtk2sMJ6QAMRRuFbovcaj+SBJiEUGklxIWOqQoxshA==", + "dependencies": { + "Microsoft.Win32.Registry": "5.0.0", + "System.Diagnostics.EventLog": "9.0.2", + "System.Security.AccessControl": "6.0.1" + } + }, "VirtualizingWrapPanel": { "type": "Direct", - "requested": "[2.1.1, )", - "resolved": "2.1.1", - "contentHash": "Fc/yjU8jqC3qpIsNxeO5RjK2lPU7xnJtBLMSQ6L9egA2PyJLQeVeXpG8WBb5N1kN15rlJEYG8dHWJ5qUGgaNrg==" + "requested": "[2.3.0, )", + "resolved": "2.3.0", + "contentHash": "Dpmtcpn2HqAWZR0NkN7Qd4YCjf+sdQcemIMKm2suZVbOIB9NsmKZnYaQDIpXWTh87a9+nArVto6Od1cM2ohzCQ==" + }, + "AvalonEdit": { + "type": "Transitive", + "resolved": "6.3.0.90", + "contentHash": "WVTb5MxwGqKdeasd3nG5udlV4t6OpvkFanziwI133K0/QJ5FvZmfzRQgpAjGTJhQfIA8GP7AzKQ3sTY9JOFk8Q==" }, "Ben.Demystifier": { "type": "Transitive", @@ -145,8 +188,8 @@ }, "BitFaster.Caching": { "type": "Transitive", - "resolved": "2.5.3", - "contentHash": "Vo/39qcam5Xe+DbyfH0JZyqPswdOoa7jv4PGtRJ6Wj8AU+aZ+TuJRlJcIe+MQjRTJwliI8k8VSQpN8sEoBIv2g==" + "resolved": "2.5.4", + "contentHash": "1QroTY1PVCZOSG9FnkkCrmCKk/+bZCgI/YXq376HnYwUDJ4Ho0EaV4YaA/5v5WYLnwIwIO7RZkdWbg9pxIpueQ==" }, "DeltaCompressionDotNet": { "type": "Transitive", @@ -161,10 +204,20 @@ "YamlDotNet": "9.1.0" } }, + "Fizzler": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "jH8KFyDJtgqLl3jZwbwgR3nA9dyebKPBgLwBx0bjPvxvvoCqHPD5IPedRGYzki8RYFpjxCFMlLtnNFPYq2OgmQ==" + }, "FSharp.Core": { "type": "Transitive", - "resolved": "9.0.101", - "contentHash": "3/YR1SDWFA+Ojx9HiBwND+0UR8ZWoeZfkhD0DWAPCDdr/YI+CyFkArmMGzGSyPXeYtjG0sy0emzfyNwjt7zhig==" + "resolved": "9.0.300", + "contentHash": "TVt2J7RCE1KCS2IaONF+p8/KIZ1eHNbW+7qmKF6hGoD4tXl+o07ja1mPtFjMqRa5uHMFaTrGTPn/m945WnDLiQ==" + }, + "HtmlAgilityPack": { + "type": "Transitive", + "resolved": "1.11.42", + "contentHash": "LDc1bEfF14EY2DZzak4xvzWvbpNXK3vi1u0KQbBpLUN4+cx/VrvXhgCAMSJhSU5vz0oMfW9JZIR20vj/PkDHPA==" }, "JetBrains.Annotations": { "type": "Transitive", @@ -173,262 +226,282 @@ }, "MemoryPack": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "cwCtED8y400vMWx/Vp0QCSeEpVFjDU4JwF52VX9WTaqVERUvNqjG9n6osFlmFuytegyXnHvYEu1qRJ8rv/rkbg==", + "resolved": "1.21.4", + "contentHash": "wy3JTBNBsO8LfQcBvvYsWr3lm2Oakolrfu0UQ3oSJSEiD+7ye0GUhYTaXuYYBowqsXBXWD9gf2218ae0JRiYVQ==", "dependencies": { - "MemoryPack.Core": "1.21.3", - "MemoryPack.Generator": "1.21.3" + "MemoryPack.Core": "1.21.4", + "MemoryPack.Generator": "1.21.4" } }, "MemoryPack.Core": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "ajrYoBWT2aKeH4tlY8q/1C9qK1R/NK+7FkuVOX58ebOSxkABoFTqCR7W+Zk2rakUHZiEgNdRqO67hiRZPq6fLA==" + "resolved": "1.21.4", + "contentHash": "6RszGorZ0ejNmp37ZcboPBMvvPCuNW2jlrdQfcs/lMzE5b3pmPF6hsm/laDc34hRlbAST1ZxaX/DvYu2DF5sBQ==" }, "MemoryPack.Generator": { "type": "Transitive", - "resolved": "1.21.3", - "contentHash": "hYU0TAIarDKnbkNIWvb7P4zBUL+CTahkuNkczsKvycSMR5kiwQ4IfLexywNKX3s05Izp4gzDSPbueepNWZRpWA==" + "resolved": "1.21.4", + "contentHash": "g14EsSS85yn0lHTi0J9ivqlZMf09A2iI51fmI+0KkzIzyCbWOBWPi5mdaY7YWmXprk12aYh9u/qfWHQUYthlwg==" }, "MessagePack": { "type": "Transitive", - "resolved": "2.5.187", - "contentHash": "uW4j8m4Nc+2Mk5n6arOChavJ9bLjkis0qWASOj2h2OwmfINuzYv+mjCHUymrYhmyyKTu3N+ObtTXAY4uQ7jIhg==", + "resolved": "2.5.192", + "contentHash": "Jtle5MaFeIFkdXtxQeL9Tu2Y3HsAQGoSntOzrn6Br/jrl6c8QmG22GEioT5HBtZJR0zw0s46OnKU8ei2M3QifA==", "dependencies": { - "MessagePack.Annotations": "2.5.187", + "MessagePack.Annotations": "2.5.192", "Microsoft.NET.StringTools": "17.6.3" } }, "MessagePack.Annotations": { "type": "Transitive", - "resolved": "2.5.187", - "contentHash": "/IvvMMS8opvlHjEJ/fR2Cal4Co726Kj77Z8KiohFhuHfLHHmb9uUxW5+tSCL4ToKFfkQlrS3HD638mRq83ySqA==" + "resolved": "2.5.192", + "contentHash": "jaJuwcgovWIZ8Zysdyf3b7b34/BrADw4v82GaEZymUhDd3ScMPrYd/cttekeDteJJPXseJxp04yTIcxiVUjTWg==" }, "Meziantou.Framework.Win32.Jobs": { "type": "Transitive", - "resolved": "3.4.0", - "contentHash": "5GGLckfpwoC1jznInEYfK2INrHyD7K1RtwZJ98kNPKBU6jeu24i4zfgDGHHfb+eK3J+eFPAxo0aYcbUxNXIbNw==" + "resolved": "3.4.3", + "contentHash": "REjInKnQ0OrhjjtSMPQtLtdURctCroB4L8Sd2gjTOYDysklvsdnrStx1tHS7uLv+fSyFF3aazZmo5Ka0v1oz/w==" }, "Microsoft.Extensions.Configuration": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "tldQUBWt/xeH2K7/hMPPo5g8zuLc3Ro9I5d4o/XrxvxOCA2EZBtW7bCHHTc49fcBtvB8tLAb/Qsmfrq+2SJ4vA==", + "resolved": "9.0.7", + "contentHash": "oxGR51+w5cXm5B9gU6XwpAB2sTiyPSmZm7hjvv0rzRnmL5o/KZzE103AuQj7sK26OBupjVzU/bZxDWvvU4nhEg==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.Primitives": "7.0.0" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "f34u2eaqIjNO9YLHBz8rozVZ+TcFiFs0F3r7nUJd7FRkVSxk8u4OpoK226mi49MwexHOR2ibP9MFvRUaLilcQQ==", + "resolved": "9.0.7", + "contentHash": "lut/kiVvNsQ120VERMUYSFhpXPpKjjql+giy03LesASPBBcC0o6+aoFdzJH9GaYpFTQ3fGVhVjKjvJDoAW5/IQ==", "dependencies": { - "Microsoft.Extensions.Primitives": "7.0.0" + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.Configuration.Binder": { "type": "Transitive", - "resolved": "7.0.3", - "contentHash": "1eRFwJBrkkncTpvh6mivB8zg4uBVm6+Y6stEJERrVEqZZc8Hvf+N1iIgj2ySYDUQko4J1Gw1rLf1M8bG83F0eA==", + "resolved": "9.0.7", + "contentHash": "ExY+zXHhU4o9KC2alp3ZdLWyVWVRSn5INqax5ABk+HEOHlAHzomhJ7ek9HHliyOMiVGoYWYaMFOGr9q59mSAGA==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7" } }, "Microsoft.Extensions.Configuration.CommandLine": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "a8Iq8SCw5m8W5pZJcPCgBpBO4E89+NaObPng+ApIhrGSv9X4JPrcFAaGM4sDgR0X83uhLgsNJq8VnGP/wqhr8A==", + "resolved": "9.0.7", + "contentHash": "LqwdkMNFeRyuqExewBSaWj8roEgZH8JQ9zEAmHl5ZFcnhCvjAdHICdYVRIiSEq9RWGB731LL8kZJM8tdTKEscA==", "dependencies": { - "Microsoft.Extensions.Configuration": "7.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + "Microsoft.Extensions.Configuration": "9.0.7", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7" } }, "Microsoft.Extensions.Configuration.EnvironmentVariables": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "RIkfqCkvrAogirjsqSrG1E1FxgrLsOZU2nhRbl07lrajnxzSU2isj2lwQah0CtCbLWo/pOIukQzM1GfneBUnxA==", + "resolved": "9.0.7", + "contentHash": "R8kgazVpDr4k1K7MeWPLAwsi5VpwrhE3ubXK38D9gpHEvf9XhZhJ8kWHKK00LDg5hJ7pMQLggdZ7XFdQ5182Ug==", "dependencies": { - "Microsoft.Extensions.Configuration": "7.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0" + "Microsoft.Extensions.Configuration": "9.0.7", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7" } }, "Microsoft.Extensions.Configuration.FileExtensions": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==", + "resolved": "9.0.7", + "contentHash": "3LVg32iMfR9ENeegXAo73L+877iOcQauLJsXlKZNVSsLA/HbPgClZdeMGdjLSkaidYw3l02XbXTlOdGYNgu91Q==", "dependencies": { - "Microsoft.Extensions.Configuration": "7.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", - "Microsoft.Extensions.FileProviders.Physical": "7.0.0", - "Microsoft.Extensions.Primitives": "7.0.0" + "Microsoft.Extensions.Configuration": "9.0.7", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7", + "Microsoft.Extensions.FileProviders.Physical": "9.0.7", + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.Configuration.Json": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==", + "resolved": "9.0.7", + "contentHash": "3HQV326liEInT9UKEc+k73f1ECwNhvDS/DJAe5WvtMKDJTJqTH2ujrUC2ZlK/j6pXyPbV9f0Ku8JB20JveGImg==", "dependencies": { - "Microsoft.Extensions.Configuration": "7.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", - "System.Text.Json": "7.0.0" + "Microsoft.Extensions.Configuration": "9.0.7", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.Configuration.FileExtensions": "9.0.7", + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7" } }, "Microsoft.Extensions.Configuration.UserSecrets": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "33HPW1PmB2RS0ietBQyvOxjp4O3wlt+4tIs8KPyMn1kqp04goiZGa7+3mc69NRLv6bphkLDy0YR7Uw3aZyf8Zw==", + "resolved": "9.0.7", + "contentHash": "ouDuPgRdeF4TJXKUh+lbm6QwyWwnCy+ijiqfFM2cI5NmW83MwKg1WNp2nCdMVcwQW8wJXteF/L9lA6ZPS3bCIQ==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.Configuration.Json": "7.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", - "Microsoft.Extensions.FileProviders.Physical": "7.0.0" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.Configuration.Json": "9.0.7", + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7", + "Microsoft.Extensions.FileProviders.Physical": "9.0.7" } }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==" + "resolved": "9.0.7", + "contentHash": "iPK1FxbGFr2Xb+4Y+dTYI8Gupu9pOi8I3JPuPsrogUmEhe2hzZ9LpCmolMEBhVDo2ikcSr7G5zYiwaapHSQTew==" + }, + "Microsoft.Extensions.Diagnostics": { + "type": "Transitive", + "resolved": "9.0.7", + "contentHash": "6ykfInm6yw7pPHJACgnrPUXxUWVslFnzad44K/siXk6Ovan6fNMnXxI5X9vphHJuZ4JbMOdPIgsfTmLD+Dyxug==", + "dependencies": { + "Microsoft.Extensions.Configuration": "9.0.7", + "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.7", + "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.7" + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions": { + "type": "Transitive", + "resolved": "9.0.7", + "contentHash": "d39Ov1JpeWCGLCOTinlaDkujhrSAQ0HFxb7Su1BjhCKBfmDcQ6Ia1i3JI6kd3NFgwi1dexTunu82daDNwt7E6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7" + } }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==", + "resolved": "9.0.7", + "contentHash": "y9djCca1cz/oz/J8jTxtoecNiNvaiGBJeWd7XOPxonH+FnfHqcfslJMcSr5JMinmWFyS7eh3C9L6m6oURZ5lSA==", "dependencies": { - "Microsoft.Extensions.Primitives": "7.0.0" + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.FileProviders.Physical": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==", + "resolved": "9.0.7", + "contentHash": "JYEPYrb+YBpFTCdmSBrk8cg3wAi1V4so7ccq04qbhg3FQHQqgJk28L3heEOKMXcZobOBUjTnGCFJD49Ez9kG5w==", "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0", - "Microsoft.Extensions.FileSystemGlobbing": "7.0.0", - "Microsoft.Extensions.Primitives": "7.0.0" + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7", + "Microsoft.Extensions.FileSystemGlobbing": "9.0.7", + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.FileSystemGlobbing": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==" + "resolved": "9.0.7", + "contentHash": "5VKpTH2ME0SSs0lrtkpKgjCeHzXR5ka/H+qThPwuWi78wHubApZ/atD7w69FDt0OOM7UMV6LIbkqEQgoby4IXA==" }, "Microsoft.Extensions.Hosting.Abstractions": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "43n9Je09z0p/7ViPxfRqs5BUItRLNVh5b6JH40F2Agkh2NBsY/jpNYTtbCcxrHCsA3oRmbR6RJBzUutB4VZvNQ==", + "resolved": "9.0.7", + "contentHash": "yG2JCXAR+VqI1mKqynLPNJlNlrUJeEISEpX4UznOp2uM4IEFz3pDDauzyMvTjICutEJtOigJ1yWBvxbaIlibBw==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.7", + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7" } }, "Microsoft.Extensions.Logging": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==", + "resolved": "9.0.7", + "contentHash": "fdIeQpXYV8yxSWG03cCbU2Otdrq4NWuhnQLXokWLv3L9YcK055E7u8WFJvP+uuP4CFeCEoqZQL4yPcjuXhCZrg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "7.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging.Abstractions": "7.0.0", - "Microsoft.Extensions.Options": "7.0.0" + "Microsoft.Extensions.DependencyInjection": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7" } }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==" + "resolved": "9.0.7", + "contentHash": "sMM6NEAdUTE/elJ2wqjOi0iBWqZmSyaTByLF9e8XHv6DRJFFnOe0N+s8Uc6C91E4SboQCfLswaBIZ+9ZXA98AA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7" + } }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "FLDA0HcffKA8ycoDQLJuCNGIE42cLWPxgdQGRBaSzZrYTkMBjnf9zrr8pGT06psLq9Q+RKWmmZczQ9bCrXEBcA==", + "resolved": "9.0.7", + "contentHash": "AEBty9rvFGvdFRqgIDEhQmiCnIfQWyzVoOZrO244cfu+n9M+wI1QLDpuROVILlplIBtLVmOezAF7d1H3Qog6Xw==", "dependencies": { - "Microsoft.Extensions.Configuration": "7.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.Configuration.Binder": "7.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging": "7.0.0", - "Microsoft.Extensions.Logging.Abstractions": "7.0.0", - "Microsoft.Extensions.Options": "7.0.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "7.0.0" + "Microsoft.Extensions.Configuration": "9.0.7", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.Configuration.Binder": "9.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7", + "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.7" } }, "Microsoft.Extensions.Logging.Console": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "qt5n8bHLZPUfuRnFxJKW5q9ZwOTncdh96rtWzWpX3Y/064MlxzCSw2ELF5Jlwdo+Y4wK3I47NmUTFsV7Sg8rqg==", + "resolved": "9.0.7", + "contentHash": "pEHlNa8iCfKsBFA3YVDn/8EicjSU/m8uDfyoR0i4svONDss4Yu9Kznw53E/TyI+TveTo7CwRid4kfd4pLYXBig==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging": "7.0.0", - "Microsoft.Extensions.Logging.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging.Configuration": "7.0.0", - "Microsoft.Extensions.Options": "7.0.0", - "System.Text.Json": "7.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging.Configuration": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7" } }, "Microsoft.Extensions.Logging.Debug": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "tFGGyPDpJ8ZdQdeckCArP7nZuoY3am9zJWuvp4OD1bHq65S0epW9BNHzAWeaIO4eYwWnGm1jRNt3vRciH8H6MA==", + "resolved": "9.0.7", + "contentHash": "MxzZj7XbsYJwfjclVTjJym2/nVIkksu7l7tC/4HYy+YRdDmpE4B+hTzCXu3BNfLNhdLPZsWpyXuYe6UGgWDm3g==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging": "7.0.0", - "Microsoft.Extensions.Logging.Abstractions": "7.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7" } }, "Microsoft.Extensions.Logging.EventLog": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "Rp7cYL9xQRVTgjMl77H5YDxszAaO+mlA+KT0BnLSVhuCoKQQOOs1sSK2/x8BK2dZ/lKeAC/CVF+20Ef2dpKXwg==", + "resolved": "9.0.7", + "contentHash": "usrMVsY7c8M8fESt34Y3eEIQIlRlKXfPDlI+vYEb6xT7SUjhua2ey3NpHgQktiTgz8Uo5RiWqGD8ieiyo2WaDA==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging": "7.0.0", - "Microsoft.Extensions.Logging.Abstractions": "7.0.0", - "Microsoft.Extensions.Options": "7.0.0", - "System.Diagnostics.EventLog": "7.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7", + "System.Diagnostics.EventLog": "9.0.7" } }, "Microsoft.Extensions.Logging.EventSource": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "MxQXndQFviIyOPqyMeLNshXnmqcfzEHE2wWcr7BF1unSisJgouZ3tItnq+aJLGPojrW8OZSC/ZdRoR6wAq+c7w==", + "resolved": "9.0.7", + "contentHash": "/wwi6ckTEegCExFV6gVToCO7CvysZnmE50fpdkYUsSMh0ue9vRkQ7uOqkHyHol93ASYTEahrp+guMtS/+fZKaA==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Logging": "7.0.0", - "Microsoft.Extensions.Logging.Abstractions": "7.0.0", - "Microsoft.Extensions.Options": "7.0.0", - "Microsoft.Extensions.Primitives": "7.0.0", - "System.Text.Json": "7.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Logging": "9.0.7", + "Microsoft.Extensions.Logging.Abstractions": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7", + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.Options": { "type": "Transitive", - "resolved": "7.0.1", - "contentHash": "pZRDYdN1FpepOIfHU62QoBQ6zdAoTvnjxFfqAzEd9Jhb2dfhA5i6jeTdgGgcgTWFRC7oT0+3XrbQu4LjvgX1Nw==", + "resolved": "9.0.7", + "contentHash": "trJnF6cRWgR5uMmHpGoHmM1wOVFdIYlELlkO9zX+RfieK0321Y55zrcs4AaEymKup7dxgEN/uJU25CAcMNQRXw==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Primitives": "7.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.Options.ConfigurationExtensions": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "95UnxZkkFdXxF6vSrtJsMHCzkDeSMuUWGs2hDT54cX+U5eVajrCJ3qLyQRW+CtpTt5OJ8bmTvpQVHu1DLhH+cA==", + "resolved": "9.0.7", + "contentHash": "pE/jeAWHEIy/8HsqYA+I1+toTsdvsv+WywAcRoNSvPoFwjOREa8Fqn7D0/i0PbiXsDLFupltTTctliePx8ib4w==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", - "Microsoft.Extensions.Configuration.Binder": "7.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", - "Microsoft.Extensions.Options": "7.0.0", - "Microsoft.Extensions.Primitives": "7.0.0" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.7", + "Microsoft.Extensions.Configuration.Binder": "9.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7", + "Microsoft.Extensions.Options": "9.0.7", + "Microsoft.Extensions.Primitives": "9.0.7" } }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q==" + "resolved": "9.0.7", + "contentHash": "ti/zD9BuuO50IqlvhWQs9GHxkCmoph5BHjGiWKdg2t6Or8XoyAfRJiKag+uvd/fpASnNklfsB01WpZ4fhAe0VQ==" }, "Microsoft.IO.RecyclableMemoryStream": { "type": "Transitive", @@ -440,19 +513,38 @@ "resolved": "17.6.3", "contentHash": "N0ZIanl1QCgvUumEL1laasU0a7sOE5ZwLZVTn0pAePnfhq8P7SvTjF8Axq+CnavuQkmdQpGNXQ1efZtu5kDFbA==" }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + }, + "Microsoft.NETCore.Targets": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" + }, "Microsoft.VisualStudio.Threading": { "type": "Transitive", - "resolved": "17.12.19", - "contentHash": "eLiGMkMYyaSguqHs3lsrFxy3tAWSLuPEL2pIWRcADMDVAs2xqm3dr1d9QYjiEusTgiClF9KD6OB2NdZP72Oy0Q==", + "resolved": "17.14.15", + "contentHash": "1DrCusT3xNLSlaJg77BsUSAzrhjdZBAvvsS0PMzyPM+fGais6SnISOhqdZQop8VVMIBLsYm2gyF9W7THjgavwA==", "dependencies": { - "Microsoft.VisualStudio.Threading.Analyzers": "17.12.19", + "Microsoft.VisualStudio.Threading.Analyzers": "17.14.15", + "Microsoft.VisualStudio.Threading.Only": "17.14.15", "Microsoft.VisualStudio.Validation": "17.8.8" } }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Transitive", - "resolved": "17.12.19", - "contentHash": "v3IYeedjoktvZ+GqYmLudxZJngmf/YWIxNT2Uy6QMMN19cvw+nkWoip1Gr1RtnFkUo1MPUVMis4C8Kj8d8DpSQ==" + "resolved": "17.14.15", + "contentHash": "mXQPJsbuUD2ydq4/ffd8h8tSOFCXec+2xJOVNCvXjuMOq/+5EKHq3D2m2MC2+nUaXeFMSt66VS/J4HdKBixgcw==" + }, + "Microsoft.VisualStudio.Threading.Only": { + "type": "Transitive", + "resolved": "17.14.15", + "contentHash": "NqONyw1RXyj9P3k5e1uU2k9kc1ptwuU5NJQzG+MPq7vQVHUzBY8HLuJf/N2Rw5H/myD96CVxziDxmjawPuzntw==", + "dependencies": { + "Microsoft.VisualStudio.Validation": "17.8.8" + } }, "Microsoft.VisualStudio.Validation": { "type": "Transitive", @@ -470,26 +562,8 @@ }, "Microsoft.Win32.SystemEvents": { "type": "Transitive", - "resolved": "9.0.2", - "contentHash": "5BkGZ6mHp2dHydR29sb0fDfAuqkv30AHtTih8wMzvPZysOmBFvHfnkR2w3tsc0pSiIg8ZoKyefJXWy9r3pBh0w==" - }, - "Microsoft.Windows.SDK.Win32Docs": { - "type": "Transitive", - "resolved": "0.1.42-alpha", - "contentHash": "Z/9po23gUA9aoukirh2ItMU2ZS9++Js9Gdds9fu5yuMojDrmArvY2y+tq9985tR3cxFxpZO1O35Wjfo0khj5HA==" - }, - "Microsoft.Windows.SDK.Win32Metadata": { - "type": "Transitive", - "resolved": "60.0.34-preview", - "contentHash": "TA3DUNi4CTeo+ItTXBnGZFt2159XOGSl0UOlG5vjDj4WHqZjhwYyyUnzOtrbCERiSaP2Hzg7otJNWwOSZgutyA==" - }, - "Microsoft.Windows.WDK.Win32Metadata": { - "type": "Transitive", - "resolved": "0.11.4-experimental", - "contentHash": "bf5MCmUyZf0gBlYQjx9UpRAZWBkRndyt9XicR+UNLvAUAFTZQbu6YaX/sNKZlR98Grn0gydfh/yT4I3vc0AIQA==", - "dependencies": { - "Microsoft.Windows.SDK.Win32Metadata": "60.0.34-preview" - } + "resolved": "9.0.7", + "contentHash": "lFGY2aGgmMREPJEfOmZcA6v0CLjWVpcfNHRgqYMoSQhy80+GxhYqdW5xe+DCLrVqE1M7/0RpOkIo49/KH/cd/A==" }, "Mono.Cecil": { "type": "Transitive", @@ -498,18 +572,18 @@ }, "Nerdbank.Streams": { "type": "Transitive", - "resolved": "2.11.74", - "contentHash": "r4G7uHHfoo8LCilPOdtf2C+Q5ymHOAXtciT4ZtB2xRlAvv4gPkWBYNAijFblStv3+uidp81j5DP11jMZl4BfJw==", + "resolved": "2.12.87", + "contentHash": "oDKOeKZ865I5X8qmU3IXMyrAnssYEiYWTobPGdrqubN3RtTzEHIv+D6fwhdcfrdhPJzHjCkK/ORztR/IsnmA6g==", "dependencies": { - "Microsoft.VisualStudio.Threading": "17.10.48", + "Microsoft.VisualStudio.Threading.Only": "17.13.61", "Microsoft.VisualStudio.Validation": "17.8.8", "System.IO.Pipelines": "8.0.0" } }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.1", - "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "NHotkey": { "type": "Transitive", @@ -521,6 +595,16 @@ "resolved": "4.7.10", "contentHash": "rcegW7kYOCjl7wX0SzsqpPBqnJ51JKi1WkYb6QBVX0Wc5IgH19Pv4t/co+T0s06OS0Ne44xgkY/mHg0PdrmJow==" }, + "runtime.osx.10.10-x64.CoreCompat.System.Drawing": { + "type": "Transitive", + "resolved": "5.8.64", + "contentHash": "Ey7xQgWwixxdrmhzEUvaR4kxZDSQMWQScp8ViLvmL5xCBKG6U3TaMv/jzHilpfQXpHmJ4IylKGzzMvnYX2FwHQ==" + }, + "SharpVectors.Wpf": { + "type": "Transitive", + "resolved": "1.8.4.2", + "contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng==" + }, "Splat": { "type": "Transitive", "resolved": "1.6.2", @@ -538,34 +622,81 @@ }, "StreamJsonRpc": { "type": "Transitive", - "resolved": "2.20.20", - "contentHash": "gwG7KViLbSWS7EI0kYevinVmIga9wZNrpSY/FnWyC6DbdjKJ1xlv/FV1L9b0rLkVP8cGxfIMexdvo/+2W5eq6Q==", + "resolved": "2.22.11", + "contentHash": "TQcqBFswLNpdSJANjhxZmIIe0Yl0kGqzjZ+uHLdhrkxntofvNu6C53XPEEYQ3Wkj8AorKumkuv/VMvTH4BHOZw==", "dependencies": { - "MessagePack": "2.5.187", - "Microsoft.VisualStudio.Threading": "17.10.48", - "Microsoft.VisualStudio.Threading.Analyzers": "17.10.48", + "MessagePack": "2.5.192", + "Microsoft.VisualStudio.Threading.Only": "17.13.61", "Microsoft.VisualStudio.Validation": "17.8.8", - "Nerdbank.Streams": "2.11.74", - "Newtonsoft.Json": "13.0.1", + "Nerdbank.Streams": "2.12.87", + "Newtonsoft.Json": "13.0.3", "System.IO.Pipelines": "8.0.0" } }, - "System.Diagnostics.DiagnosticSource": { + "Svg": { + "type": "Transitive", + "resolved": "3.0.84", + "contentHash": "QI35/+zRerIuOTBAw0GhbEQhuesSd3nYha9ibgyv6ofe4XRpFSjaXyQJJGssaUVZaBb2vwMAFKqb5uWnTAB2Sg==", + "dependencies": { + "Fizzler": "1.1.0", + "System.Drawing.Common": "4.5.1", + "System.ObjectModel": "4.3.0", + "runtime.osx.10.10-x64.CoreCompat.System.Drawing": "5.8.64" + } + }, + "System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Debug": { "type": "Transitive", - "resolved": "7.0.1", - "contentHash": "T9SLFxzDp0SreCffRDXSAS5G+lq6E8qP4knHS2IBjwCdx2KEvGnGZsq7gFpselYOda7l6gXsJMD93TQsFj/URA==" + "resolved": "4.3.0", + "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==" + "resolved": "9.0.7", + "contentHash": "AJ+9fyCtQUImntxAJ9l4PZiCd4iepuk4pm7Qcno7PBIWQnfXlvwKuFsGk2H+QyY69GUVzDP2heELW6ho5BCXUg==" }, "System.Drawing.Common": { "type": "Transitive", - "resolved": "9.0.2", - "contentHash": "JU947wzf8JbBS16Y5EIZzAlyQU+k68D7LRx6y03s2wlhlvLqkt/8uPBrjv2hJnnaJKbdb0GhQ3JZsfYXhrRjyg==", + "resolved": "9.0.7", + "contentHash": "1k/Pk7hcM3vP2tfIRRS2ECCCN7ya+hvocsM1JMc4ZDCU6qw7yOuUmqmCDfgXZ4Q4FS6jass2EAai5ByKodDi0g==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "9.0.7" + } + }, + "System.Globalization": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", "dependencies": { - "Microsoft.Win32.SystemEvents": "9.0.2" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" } }, "System.IO.Pipelines": { @@ -573,6 +704,30 @@ "resolved": "8.0.0", "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" }, + "System.ObjectModel": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, "System.Reflection.Emit": { "type": "Transitive", "resolved": "4.7.0", @@ -583,6 +738,37 @@ "resolved": "5.0.0", "contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==" }, + "System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, "System.Security.AccessControl": { "type": "Transitive", "resolved": "6.0.1", @@ -593,17 +779,33 @@ "resolved": "5.0.0", "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" }, - "System.Text.Encodings.Web": { + "System.Text.Encoding": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==" + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } }, - "System.Text.Json": { + "System.Threading": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==", + "resolved": "4.3.0", + "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", "dependencies": { - "System.Text.Encodings.Web": "7.0.0" + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, "System.ValueTuple": { @@ -616,6 +818,11 @@ "resolved": "3.0.1.4", "contentHash": "uQo97618y9yzLDxrnehPN+/tuiOlk5BqieEdwctHZOAS9miMXnHKgMFYVw8CSGXRglyTYXlrW7qtUlU7Fje5Ew==" }, + "WpfAnimatedGif": { + "type": "Transitive", + "resolved": "2.0.2", + "contentHash": "B0j9SqtThyHVTiOPvu6yR+39Te0g3o+7Jjb+qEm7+Iz1HRqbE5/4QV+ntHWOYYBPOUFr9x1mdzGl/EzWP+nKiA==" + }, "YamlDotNet": { "type": "Transitive", "resolved": "9.1.0", @@ -625,12 +832,13 @@ "type": "Project", "dependencies": { "Droplex": "[1.7.0, )", - "FSharp.Core": "[9.0.101, )", + "FSharp.Core": "[9.0.300, )", "Flow.Launcher.Infrastructure": "[1.0.0, )", - "Flow.Launcher.Plugin": "[4.4.0, )", - "Meziantou.Framework.Win32.Jobs": "[3.4.0, )", + "Flow.Launcher.Plugin": "[4.7.0, )", + "Meziantou.Framework.Win32.Jobs": "[3.4.3, )", "Microsoft.IO.RecyclableMemoryStream": "[3.0.1, )", - "StreamJsonRpc": "[2.20.20, )", + "SemanticVersioning": "[3.0.0, )", + "StreamJsonRpc": "[2.22.11, )", "squirrel.windows": "[1.5.2, )" } }, @@ -638,22 +846,21 @@ "type": "Project", "dependencies": { "Ben.Demystifier": "[0.4.1, )", - "BitFaster.Caching": "[2.5.3, )", + "BitFaster.Caching": "[2.5.4, )", "CommunityToolkit.Mvvm": "[8.4.0, )", - "Flow.Launcher.Plugin": "[4.4.0, )", - "MemoryPack": "[1.21.3, )", - "Microsoft.VisualStudio.Threading": "[17.12.19, )", + "Flow.Launcher.Plugin": "[4.7.0, )", + "MemoryPack": "[1.21.4, )", + "Microsoft.VisualStudio.Threading": "[17.14.15, )", "NLog": "[4.7.10, )", - "PropertyChanged.Fody": "[3.4.0, )", - "System.Drawing.Common": "[9.0.2, )", + "SharpVectors.Wpf": "[1.8.4.2, )", + "System.Drawing.Common": "[9.0.7, )", "ToolGood.Words.Pinyin": "[3.0.1.4, )" } }, "flow.launcher.plugin": { "type": "Project", "dependencies": { - "JetBrains.Annotations": "[2024.3.0, )", - "PropertyChanged.Fody": "[3.4.0, )" + "JetBrains.Annotations": "[2024.3.0, )" } } } diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj index fdd41c28dd3..953b7a54e3b 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj @@ -96,7 +96,7 @@ - + diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj b/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj index ea080397805..b444fb8f655 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj @@ -47,9 +47,8 @@ - - - + + diff --git a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj index cd310fb35bd..2da97ebbd4c 100644 --- a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj +++ b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj @@ -52,7 +52,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Plugins/Flow.Launcher.Plugin.ProcessKiller/ProcessHelper.cs b/Plugins/Flow.Launcher.Plugin.ProcessKiller/ProcessHelper.cs index 3867829058f..cea34f7dc57 100644 --- a/Plugins/Flow.Launcher.Plugin.ProcessKiller/ProcessHelper.cs +++ b/Plugins/Flow.Launcher.Plugin.ProcessKiller/ProcessHelper.cs @@ -163,23 +163,20 @@ public unsafe string TryGetProcessFilename(Process p) try { var handle = PInvoke.OpenProcess(PROCESS_ACCESS_RIGHTS.PROCESS_QUERY_LIMITED_INFORMATION, false, (uint)p.Id); - if (handle.Value == IntPtr.Zero) + if (handle == HWND.Null) { return string.Empty; } - using var safeHandle = new SafeProcessHandle(handle.Value, true); + using var safeHandle = new SafeProcessHandle((nint)handle.Value, true); uint capacity = 2000; Span buffer = new char[capacity]; - fixed (char* pBuffer = buffer) + if (!PInvoke.QueryFullProcessImageName(safeHandle, PROCESS_NAME_FORMAT.PROCESS_NAME_WIN32, buffer, ref capacity)) { - if (!PInvoke.QueryFullProcessImageName(safeHandle, PROCESS_NAME_FORMAT.PROCESS_NAME_WIN32, (PWSTR)pBuffer, ref capacity)) - { - return string.Empty; - } - - return buffer[..(int)capacity].ToString(); + return string.Empty; } + + return buffer[..(int)capacity].ToString(); } catch { diff --git a/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj b/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj index 0c45a8590e2..cb2b6470b27 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj +++ b/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj @@ -64,8 +64,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs index fac3ab181e7..5c2f6f9762d 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs @@ -27,28 +27,36 @@ public static unsafe string GetLocalizedName(string path) // If there is no resource to localize a file name the method returns a non zero value. fixed (char* bufferPtr = buffer) { - var result = PInvoke.SHGetLocalizedName(path, bufferPtr, capacity, out var id); - if (result != HRESULT.S_OK) + int id; + fixed (char* pathPtr = path) { - return string.Empty; - } + var result = PInvoke.SHGetLocalizedName(new PCWSTR(pathPtr), bufferPtr, capacity, &id); - var resourcePathStr = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(bufferPtr).ToString(); - _ = PInvoke.ExpandEnvironmentStrings(resourcePathStr, bufferPtr, capacity); - using var handle = PInvoke.LoadLibraryEx(resourcePathStr, - LOAD_LIBRARY_FLAGS.DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_FLAGS.LOAD_LIBRARY_AS_DATAFILE); - if (handle.IsInvalid) - { - return string.Empty; - } + if (result != HRESULT.S_OK) + { + return string.Empty; + } - // not sure about the behavior of Pinvoke.LoadString, so we clear the buffer before using it (so it must be a null-terminated string) - buffer.Clear(); + var resourcePathStr = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(bufferPtr).ToString(); + fixed (char* resourcePathPtr = resourcePathStr) + { + _ = PInvoke.ExpandEnvironmentStrings(new PCWSTR(resourcePathPtr), bufferPtr, capacity); + using var handle = PInvoke.LoadLibraryEx(resourcePathStr, + LOAD_LIBRARY_FLAGS.DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_FLAGS.LOAD_LIBRARY_AS_DATAFILE); + if (handle.IsInvalid) + { + return string.Empty; + } - if (PInvoke.LoadString(handle, (uint)id, bufferPtr, capacity) != 0) - { - var lString = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(bufferPtr).ToString(); - return lString; + // not sure about the behavior of Pinvoke.LoadString, so we clear the buffer before using it (so it must be a null-terminated string) + buffer.Clear(); + + if (PInvoke.LoadString(handle, (uint)id, buffer, capacity) != 0) + { + var lString = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(bufferPtr).ToString(); + return lString; + } + } } } diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj index 999003fd835..cb5b3233f67 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj +++ b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj @@ -59,7 +59,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive From 13cf4338894fc60fb1ff8b241aafafeed17e1465 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sat, 19 Jul 2025 20:37:14 +0800 Subject: [PATCH 02/15] Upgrade NLog to 6.0.1 and resolve new package NLog.OutputDebugString --- Flow.Launcher.Core/packages.lock.json | 15 ++++++++++++--- .../Flow.Launcher.Infrastructure.csproj | 3 ++- Flow.Launcher.Infrastructure/packages.lock.json | 15 ++++++++++++--- Flow.Launcher/packages.lock.json | 15 ++++++++++++--- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/Flow.Launcher.Core/packages.lock.json b/Flow.Launcher.Core/packages.lock.json index 067c704af1e..b7bc7ce0f84 100644 --- a/Flow.Launcher.Core/packages.lock.json +++ b/Flow.Launcher.Core/packages.lock.json @@ -181,8 +181,16 @@ }, "NLog": { "type": "Transitive", - "resolved": "4.7.10", - "contentHash": "rcegW7kYOCjl7wX0SzsqpPBqnJ51JKi1WkYb6QBVX0Wc5IgH19Pv4t/co+T0s06OS0Ne44xgkY/mHg0PdrmJow==" + "resolved": "6.0.1", + "contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug==" + }, + "NLog.OutputDebugString": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==", + "dependencies": { + "NLog": "6.0.1" + } }, "SharpVectors.Wpf": { "type": "Transitive", @@ -231,7 +239,8 @@ "Flow.Launcher.Plugin": "[4.7.0, )", "MemoryPack": "[1.21.4, )", "Microsoft.VisualStudio.Threading": "[17.14.15, )", - "NLog": "[4.7.10, )", + "NLog": "[6.0.1, )", + "NLog.OutputDebugString": "[6.0.1, )", "SharpVectors.Wpf": "[1.8.4.2, )", "System.Drawing.Common": "[9.0.7, )", "ToolGood.Words.Pinyin": "[3.0.1.4, )" diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj index dd9a305a299..82963fa323b 100644 --- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj +++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj @@ -66,7 +66,8 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + + all diff --git a/Flow.Launcher.Infrastructure/packages.lock.json b/Flow.Launcher.Infrastructure/packages.lock.json index 47c87f1ca87..152ee487780 100644 --- a/Flow.Launcher.Infrastructure/packages.lock.json +++ b/Flow.Launcher.Infrastructure/packages.lock.json @@ -63,9 +63,18 @@ }, "NLog": { "type": "Direct", - "requested": "[4.7.10, )", - "resolved": "4.7.10", - "contentHash": "rcegW7kYOCjl7wX0SzsqpPBqnJ51JKi1WkYb6QBVX0Wc5IgH19Pv4t/co+T0s06OS0Ne44xgkY/mHg0PdrmJow==" + "requested": "[6.0.1, )", + "resolved": "6.0.1", + "contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug==" + }, + "NLog.OutputDebugString": { + "type": "Direct", + "requested": "[6.0.1, )", + "resolved": "6.0.1", + "contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==", + "dependencies": { + "NLog": "6.0.1" + } }, "PropertyChanged.Fody": { "type": "Direct", diff --git a/Flow.Launcher/packages.lock.json b/Flow.Launcher/packages.lock.json index 344f06d3a67..3dde15f2c19 100644 --- a/Flow.Launcher/packages.lock.json +++ b/Flow.Launcher/packages.lock.json @@ -592,8 +592,16 @@ }, "NLog": { "type": "Transitive", - "resolved": "4.7.10", - "contentHash": "rcegW7kYOCjl7wX0SzsqpPBqnJ51JKi1WkYb6QBVX0Wc5IgH19Pv4t/co+T0s06OS0Ne44xgkY/mHg0PdrmJow==" + "resolved": "6.0.1", + "contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug==" + }, + "NLog.OutputDebugString": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==", + "dependencies": { + "NLog": "6.0.1" + } }, "runtime.osx.10.10-x64.CoreCompat.System.Drawing": { "type": "Transitive", @@ -851,7 +859,8 @@ "Flow.Launcher.Plugin": "[4.7.0, )", "MemoryPack": "[1.21.4, )", "Microsoft.VisualStudio.Threading": "[17.14.15, )", - "NLog": "[4.7.10, )", + "NLog": "[6.0.1, )", + "NLog.OutputDebugString": "[6.0.1, )", "SharpVectors.Wpf": "[1.8.4.2, )", "System.Drawing.Common": "[9.0.7, )", "ToolGood.Words.Pinyin": "[3.0.1.4, )" From 34cba653f866c90ca3f575902fa574ecfe7b6b5b Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sun, 20 Jul 2025 08:39:35 +0800 Subject: [PATCH 03/15] Upgrade PinYin to 3.1.0.x --- Flow.Launcher.Core/packages.lock.json | 6 +++--- .../Flow.Launcher.Infrastructure.csproj | 4 +--- Flow.Launcher.Infrastructure/packages.lock.json | 6 +++--- Flow.Launcher/packages.lock.json | 6 +++--- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Flow.Launcher.Core/packages.lock.json b/Flow.Launcher.Core/packages.lock.json index b7bc7ce0f84..dfb09916644 100644 --- a/Flow.Launcher.Core/packages.lock.json +++ b/Flow.Launcher.Core/packages.lock.json @@ -222,8 +222,8 @@ }, "ToolGood.Words.Pinyin": { "type": "Transitive", - "resolved": "3.0.1.4", - "contentHash": "uQo97618y9yzLDxrnehPN+/tuiOlk5BqieEdwctHZOAS9miMXnHKgMFYVw8CSGXRglyTYXlrW7qtUlU7Fje5Ew==" + "resolved": "3.1.0.3", + "contentHash": "VKcf8sUq/+LyY99WgLhOu7Q32ROEyR30/2xCCj9ADRi45wVC7kpXrYCf9vH1qirkmrIfpL8inoxAbrqAlfXxsQ==" }, "YamlDotNet": { "type": "Transitive", @@ -243,7 +243,7 @@ "NLog.OutputDebugString": "[6.0.1, )", "SharpVectors.Wpf": "[1.8.4.2, )", "System.Drawing.Common": "[9.0.7, )", - "ToolGood.Words.Pinyin": "[3.0.1.4, )" + "ToolGood.Words.Pinyin": "[3.1.0.3, )" } }, "flow.launcher.plugin": { diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj index 82963fa323b..81be26196f9 100644 --- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj +++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj @@ -73,9 +73,7 @@ - - - + \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/packages.lock.json b/Flow.Launcher.Infrastructure/packages.lock.json index 152ee487780..0e830661cf6 100644 --- a/Flow.Launcher.Infrastructure/packages.lock.json +++ b/Flow.Launcher.Infrastructure/packages.lock.json @@ -102,9 +102,9 @@ }, "ToolGood.Words.Pinyin": { "type": "Direct", - "requested": "[3.0.1.4, )", - "resolved": "3.0.1.4", - "contentHash": "uQo97618y9yzLDxrnehPN+/tuiOlk5BqieEdwctHZOAS9miMXnHKgMFYVw8CSGXRglyTYXlrW7qtUlU7Fje5Ew==" + "requested": "[3.1.0.3, )", + "resolved": "3.1.0.3", + "contentHash": "VKcf8sUq/+LyY99WgLhOu7Q32ROEyR30/2xCCj9ADRi45wVC7kpXrYCf9vH1qirkmrIfpL8inoxAbrqAlfXxsQ==" }, "JetBrains.Annotations": { "type": "Transitive", diff --git a/Flow.Launcher/packages.lock.json b/Flow.Launcher/packages.lock.json index 3dde15f2c19..591ee2a3c1a 100644 --- a/Flow.Launcher/packages.lock.json +++ b/Flow.Launcher/packages.lock.json @@ -823,8 +823,8 @@ }, "ToolGood.Words.Pinyin": { "type": "Transitive", - "resolved": "3.0.1.4", - "contentHash": "uQo97618y9yzLDxrnehPN+/tuiOlk5BqieEdwctHZOAS9miMXnHKgMFYVw8CSGXRglyTYXlrW7qtUlU7Fje5Ew==" + "resolved": "3.1.0.3", + "contentHash": "VKcf8sUq/+LyY99WgLhOu7Q32ROEyR30/2xCCj9ADRi45wVC7kpXrYCf9vH1qirkmrIfpL8inoxAbrqAlfXxsQ==" }, "WpfAnimatedGif": { "type": "Transitive", @@ -863,7 +863,7 @@ "NLog.OutputDebugString": "[6.0.1, )", "SharpVectors.Wpf": "[1.8.4.2, )", "System.Drawing.Common": "[9.0.7, )", - "ToolGood.Words.Pinyin": "[3.0.1.4, )" + "ToolGood.Words.Pinyin": "[3.1.0.3, )" } }, "flow.launcher.plugin": { From 90eec91c4e201c0ded1c9c548a35d89426ab52a3 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sun, 20 Jul 2025 19:56:54 +0800 Subject: [PATCH 04/15] Fix ModernWpfUI version & Restore nuget --- Flow.Launcher.Core/packages.lock.json | 20 +++++++++++ .../packages.lock.json | 20 +++++++++++ Flow.Launcher/packages.lock.json | 36 +++++++++---------- 3 files changed, 58 insertions(+), 18 deletions(-) diff --git a/Flow.Launcher.Core/packages.lock.json b/Flow.Launcher.Core/packages.lock.json index dfb09916644..caec08ebf8d 100644 --- a/Flow.Launcher.Core/packages.lock.json +++ b/Flow.Launcher.Core/packages.lock.json @@ -83,6 +83,11 @@ "resolved": "1.0.0", "contentHash": "nwbZAYd+DblXAIzlnwDSnl0CiCm8jWLfHSYnoN4wYhtIav6AegB3+T/vKzLbU2IZlPB8Bvl8U3NXpx3eaz+N5w==" }, + "InputSimulator": { + "type": "Transitive", + "resolved": "1.0.4", + "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA==" + }, "JetBrains.Annotations": { "type": "Transitive", "resolved": "2024.3.0", @@ -179,6 +184,19 @@ "resolved": "13.0.3", "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, + "NHotkey": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "IEghs0QqWsQYH0uUmvIl0Ye6RaebWRh38eB6ToOkDnQucTYRGFOgtig0gSxlwCszTilYFz3n1ZuY762x+kDR3A==" + }, + "NHotkey.Wpf": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==", + "dependencies": { + "NHotkey": "3.0.0" + } + }, "NLog": { "type": "Transitive", "resolved": "6.0.1", @@ -237,8 +255,10 @@ "BitFaster.Caching": "[2.5.4, )", "CommunityToolkit.Mvvm": "[8.4.0, )", "Flow.Launcher.Plugin": "[4.7.0, )", + "InputSimulator": "[1.0.4, )", "MemoryPack": "[1.21.4, )", "Microsoft.VisualStudio.Threading": "[17.14.15, )", + "NHotkey.Wpf": "[3.0.0, )", "NLog": "[6.0.1, )", "NLog.OutputDebugString": "[6.0.1, )", "SharpVectors.Wpf": "[1.8.4.2, )", diff --git a/Flow.Launcher.Infrastructure/packages.lock.json b/Flow.Launcher.Infrastructure/packages.lock.json index 0e830661cf6..87b4bb6da7b 100644 --- a/Flow.Launcher.Infrastructure/packages.lock.json +++ b/Flow.Launcher.Infrastructure/packages.lock.json @@ -29,6 +29,12 @@ "resolved": "6.9.2", "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w==" }, + "InputSimulator": { + "type": "Direct", + "requested": "[1.0.4, )", + "resolved": "1.0.4", + "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA==" + }, "MemoryPack": { "type": "Direct", "requested": "[1.21.4, )", @@ -61,6 +67,15 @@ "Microsoft.Windows.WDK.Win32Metadata": "0.12.8-experimental" } }, + "NHotkey.Wpf": { + "type": "Direct", + "requested": "[3.0.0, )", + "resolved": "3.0.0", + "contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==", + "dependencies": { + "NHotkey": "3.0.0" + } + }, "NLog": { "type": "Direct", "requested": "[6.0.1, )", @@ -162,6 +177,11 @@ "Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview" } }, + "NHotkey": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "IEghs0QqWsQYH0uUmvIl0Ye6RaebWRh38eB6ToOkDnQucTYRGFOgtig0gSxlwCszTilYFz3n1ZuY762x+kDR3A==" + }, "System.Reflection.Metadata": { "type": "Transitive", "resolved": "5.0.0", diff --git a/Flow.Launcher/packages.lock.json b/Flow.Launcher/packages.lock.json index 591ee2a3c1a..1047b1f3f7f 100644 --- a/Flow.Launcher/packages.lock.json +++ b/Flow.Launcher/packages.lock.json @@ -20,12 +20,6 @@ "resolved": "6.9.2", "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w==" }, - "InputSimulator": { - "type": "Direct", - "requested": "[1.0.4, )", - "resolved": "1.0.4", - "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA==" - }, "MdXaml": { "type": "Direct", "requested": "[1.27.0, )", @@ -128,18 +122,9 @@ }, "ModernWpfUI": { "type": "Direct", - "requested": "[0.9.5, )", - "resolved": "0.9.5", - "contentHash": "Y3XkH0wmzDUdbFglykkIIRVPVsmIqN+rKoLZFaMDh9yMG39AJ6VannEmRCzjVLn7f8pg4SqBWC0PGT49BqTACA==" - }, - "NHotkey.Wpf": { - "type": "Direct", - "requested": "[3.0.0, )", - "resolved": "3.0.0", - "contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==", - "dependencies": { - "NHotkey": "3.0.0" - } + "requested": "[0.9.4, )", + "resolved": "0.9.4", + "contentHash": "HJ07Be9KOiGKGcMLz/AwY+84h3yGHRPuYpYXCE6h1yPtaFwGMWfanZ70jX7W5XWx8+Qk1vGox+WGKgxxsy6EHw==" }, "PropertyChanged.Fody": { "type": "Direct", @@ -219,6 +204,11 @@ "resolved": "1.11.42", "contentHash": "LDc1bEfF14EY2DZzak4xvzWvbpNXK3vi1u0KQbBpLUN4+cx/VrvXhgCAMSJhSU5vz0oMfW9JZIR20vj/PkDHPA==" }, + "InputSimulator": { + "type": "Transitive", + "resolved": "1.0.4", + "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA==" + }, "JetBrains.Annotations": { "type": "Transitive", "resolved": "2024.3.0", @@ -590,6 +580,14 @@ "resolved": "3.0.0", "contentHash": "IEghs0QqWsQYH0uUmvIl0Ye6RaebWRh38eB6ToOkDnQucTYRGFOgtig0gSxlwCszTilYFz3n1ZuY762x+kDR3A==" }, + "NHotkey.Wpf": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==", + "dependencies": { + "NHotkey": "3.0.0" + } + }, "NLog": { "type": "Transitive", "resolved": "6.0.1", @@ -857,8 +855,10 @@ "BitFaster.Caching": "[2.5.4, )", "CommunityToolkit.Mvvm": "[8.4.0, )", "Flow.Launcher.Plugin": "[4.7.0, )", + "InputSimulator": "[1.0.4, )", "MemoryPack": "[1.21.4, )", "Microsoft.VisualStudio.Threading": "[17.14.15, )", + "NHotkey.Wpf": "[3.0.0, )", "NLog": "[6.0.1, )", "NLog.OutputDebugString": "[6.0.1, )", "SharpVectors.Wpf": "[1.8.4.2, )", From 55589f872a72d7274934cf5b74f297b9f9dae170 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sun, 20 Jul 2025 19:58:49 +0800 Subject: [PATCH 05/15] Resolve conflicts --- Flow.Launcher.Infrastructure/Win32Helper.cs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Flow.Launcher.Infrastructure/Win32Helper.cs b/Flow.Launcher.Infrastructure/Win32Helper.cs index 0e7554d4206..5770bbf122e 100644 --- a/Flow.Launcher.Infrastructure/Win32Helper.cs +++ b/Flow.Launcher.Infrastructure/Win32Helper.cs @@ -816,20 +816,17 @@ internal static unsafe string GetProcessPathFromHwnd(HWND hWnd) if (threadId == 0) return string.Empty; var process = PInvoke.OpenProcess(PROCESS_ACCESS_RIGHTS.PROCESS_QUERY_LIMITED_INFORMATION, false, pid); - if (process.Value != IntPtr.Zero) + if (process != HWND.Null) { - using var safeHandle = new SafeProcessHandle(process.Value, true); + using var safeHandle = new SafeProcessHandle((nint)process.Value, true); uint capacity = 2000; Span buffer = new char[capacity]; - fixed (char* pBuffer = buffer) + if (!PInvoke.QueryFullProcessImageName(safeHandle, PROCESS_NAME_FORMAT.PROCESS_NAME_WIN32, buffer, ref capacity)) { - if (!PInvoke.QueryFullProcessImageName(safeHandle, PROCESS_NAME_FORMAT.PROCESS_NAME_WIN32, (PWSTR)pBuffer, ref capacity)) - { - return string.Empty; - } - - return buffer[..(int)capacity].ToString(); + return string.Empty; } + + return buffer[..(int)capacity].ToString(); } return string.Empty; From e63941275e539fd5dd2044c9e9bb93915dda0392 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 23 Jul 2025 13:27:36 +0800 Subject: [PATCH 06/15] Upgrade MonitorInfo class --- Flow.Launcher.Infrastructure/MonitorInfo.cs | 91 ++++++++++++++++--- .../NativeMethods.txt | 4 +- Flow.Launcher.Infrastructure/Win32Helper.cs | 4 +- 3 files changed, 81 insertions(+), 18 deletions(-) diff --git a/Flow.Launcher.Infrastructure/MonitorInfo.cs b/Flow.Launcher.Infrastructure/MonitorInfo.cs index 3221708c135..53617f7e959 100644 --- a/Flow.Launcher.Infrastructure/MonitorInfo.cs +++ b/Flow.Launcher.Infrastructure/MonitorInfo.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using System; +using System; +using System.Collections.Generic; using System.Runtime.InteropServices; using System.Windows; using Windows.Win32; @@ -11,9 +11,12 @@ namespace Flow.Launcher.Infrastructure; /// /// Contains full information about a display monitor. -/// Codes are edited from: . +/// Inspired from: https://github.com/Jack251970/DesktopWidgets3. /// -internal class MonitorInfo +/// +/// Use this class to replace the System.Windows.Forms.Screen class which can cause possible System.PlatformNotSupportedException. +/// +public class MonitorInfo { /// /// Gets the display monitors (including invisible pseudo-monitors associated with the mirroring drivers). @@ -23,14 +26,14 @@ public static unsafe IList GetDisplayMonitors() { var monitorCount = PInvoke.GetSystemMetrics(SYSTEM_METRICS_INDEX.SM_CMONITORS); var list = new List(monitorCount); - var callback = new MONITORENUMPROC((HMONITOR monitor, HDC deviceContext, RECT* rect, LPARAM data) => + var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) => { list.Add(new MonitorInfo(monitor, rect)); return true; }); var dwData = new LPARAM(); var hdc = new HDC(); - bool ok = PInvoke.EnumDisplayMonitors(hdc, (RECT?)null, callback, dwData); + bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData); if (!ok) { Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); @@ -43,11 +46,11 @@ public static unsafe IList GetDisplayMonitors() /// /// Window handle /// The display monitor that is nearest to a given window, or null if no monitor is found. - public static unsafe MonitorInfo GetNearestDisplayMonitor(HWND hwnd) + public static unsafe MonitorInfo GetNearestDisplayMonitor(nint hwnd) { - var nearestMonitor = PInvoke.MonitorFromWindow(hwnd, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST); + var nearestMonitor = PInvoke.MonitorFromWindow(new(hwnd), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST); MonitorInfo nearestMonitorInfo = null; - var callback = new MONITORENUMPROC((HMONITOR monitor, HDC deviceContext, RECT* rect, LPARAM data) => + var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) => { if (monitor == nearestMonitor) { @@ -58,7 +61,7 @@ public static unsafe MonitorInfo GetNearestDisplayMonitor(HWND hwnd) }); var dwData = new LPARAM(); var hdc = new HDC(); - bool ok = PInvoke.EnumDisplayMonitors(hdc, (RECT?)null, callback, dwData); + bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData); if (!ok) { Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); @@ -66,17 +69,75 @@ public static unsafe MonitorInfo GetNearestDisplayMonitor(HWND hwnd) return nearestMonitorInfo; } + /// + /// Gets the primary display monitor (the one that contains the taskbar). + /// + /// The primary display monitor, or null if no monitor is found. + public static unsafe MonitorInfo GetPrimaryDisplayMonitor() + { + var primaryMonitor = PInvoke.MonitorFromWindow(new HWND(IntPtr.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY); + MonitorInfo primaryMonitorInfo = null; + var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) => + { + if (monitor == primaryMonitor) + { + primaryMonitorInfo = new MonitorInfo(monitor, rect); + return false; + } + return true; + }); + var dwData = new LPARAM(); + var hdc = new HDC(); + bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData); + if (!ok) + { + Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); + } + return primaryMonitorInfo; + } + + /// + /// Gets the display monitor that contains the cursor. + /// + /// The display monitor that contains the cursor, or null if no monitor is found. + public static unsafe MonitorInfo GetCursorDisplayMonitor() + { + if (!PInvoke.GetCursorPos(out var pt)) + { + Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); + } + var cursorMonitor = PInvoke.MonitorFromPoint(pt, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST); + MonitorInfo cursorMonitorInfo = null; + var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) => + { + if (monitor == cursorMonitor) + { + cursorMonitorInfo = new MonitorInfo(monitor, rect); + return false; + } + return true; + }); + var dwData = new LPARAM(); + var hdc = new HDC(); + bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData); + if (!ok) + { + Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); + } + return cursorMonitorInfo; + } + private readonly HMONITOR _monitor; internal unsafe MonitorInfo(HMONITOR monitor, RECT* rect) { - RectMonitor = + Bounds = new Rect(new Point(rect->left, rect->top), new Point(rect->right, rect->bottom)); _monitor = monitor; var info = new MONITORINFOEXW() { monitorInfo = new MONITORINFO() { cbSize = (uint)sizeof(MONITORINFOEXW) } }; GetMonitorInfo(monitor, ref info); - RectWork = + WorkingArea = new Rect(new Point(info.monitorInfo.rcWork.left, info.monitorInfo.rcWork.top), new Point(info.monitorInfo.rcWork.right, info.monitorInfo.rcWork.bottom)); Name = new string(info.szDevice.AsSpan()).Replace("\0", "").Trim(); @@ -93,7 +154,7 @@ internal unsafe MonitorInfo(HMONITOR monitor, RECT* rect) /// /// If the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values. /// - public Rect RectMonitor { get; } + public Rect Bounds { get; } /// /// Gets the work area rectangle of the display monitor, expressed in virtual-screen coordinates. @@ -101,7 +162,7 @@ internal unsafe MonitorInfo(HMONITOR monitor, RECT* rect) /// /// If the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values. /// - public Rect RectWork { get; } + public Rect WorkingArea { get; } /// /// Gets if the monitor is the the primary display monitor. @@ -109,7 +170,7 @@ internal unsafe MonitorInfo(HMONITOR monitor, RECT* rect) public bool IsPrimary => _monitor == PInvoke.MonitorFromWindow(new(IntPtr.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY); /// - public override string ToString() => $"{Name} {RectMonitor.Width}x{RectMonitor.Height}"; + public override string ToString() => $"{Name} {Bounds.Width}x{Bounds.Height}"; private static unsafe bool GetMonitorInfo(HMONITOR hMonitor, ref MONITORINFOEXW lpmi) { diff --git a/Flow.Launcher.Infrastructure/NativeMethods.txt b/Flow.Launcher.Infrastructure/NativeMethods.txt index 965ab6caa8e..2054bc2c029 100644 --- a/Flow.Launcher.Infrastructure/NativeMethods.txt +++ b/Flow.Launcher.Infrastructure/NativeMethods.txt @@ -39,6 +39,8 @@ EnumDisplayMonitors MonitorFromWindow GetMonitorInfo MONITORINFOEXW +GetCursorPos +MonitorFromPoint WM_ENTERSIZEMOVE WM_EXITSIZEMOVE @@ -89,4 +91,4 @@ WM_GETTEXT OpenProcess QueryFullProcessImageName EVENT_OBJECT_HIDE -EVENT_SYSTEM_DIALOGEND +EVENT_SYSTEM_DIALOGEND \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/Win32Helper.cs b/Flow.Launcher.Infrastructure/Win32Helper.cs index 5770bbf122e..84880d68c75 100644 --- a/Flow.Launcher.Infrastructure/Win32Helper.cs +++ b/Flow.Launcher.Infrastructure/Win32Helper.cs @@ -293,8 +293,8 @@ public static unsafe bool IsForegroundWindowFullscreen() } var monitorInfo = MonitorInfo.GetNearestDisplayMonitor(hWnd); - return (appBounds.bottom - appBounds.top) == monitorInfo.RectMonitor.Height && - (appBounds.right - appBounds.left) == monitorInfo.RectMonitor.Width; + return (appBounds.bottom - appBounds.top) == monitorInfo.Bounds.Height && + (appBounds.right - appBounds.left) == monitorInfo.Bounds.Width; } #endregion From 527c27f67556cc735dd850bf78b93e19070f72f6 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 23 Jul 2025 13:28:50 +0800 Subject: [PATCH 07/15] Remove System.Windows.Forms.Screen reference --- Flow.Launcher/MainWindow.xaml.cs | 41 +++++++++---------- Flow.Launcher/Msg.xaml.cs | 3 +- Flow.Launcher/MsgWithButton.xaml.cs | 3 +- .../SettingsPaneGeneralViewModel.cs | 6 +-- Flow.Launcher/SettingWindow.xaml.cs | 7 ++-- 5 files changed, 28 insertions(+), 32 deletions(-) diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 2ddce81900e..429a4aece10 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel; using System.Linq; using System.Media; @@ -30,7 +30,6 @@ using Key = System.Windows.Input.Key; using MouseButtons = System.Windows.Forms.MouseButtons; using NotifyIcon = System.Windows.Forms.NotifyIcon; -using Screen = System.Windows.Forms.Screen; namespace Flow.Launcher { @@ -532,7 +531,7 @@ private void OnMouseDown(object sender, MouseButtonEventArgs e) double yRatio = mousePos.Y / maxHeight; // Current monitor information - var screen = Screen.FromHandle(new WindowInteropHelper(this).Handle); + var screen = MonitorInfo.GetNearestDisplayMonitor(new WindowInteropHelper(this).Handle); var workingArea = screen.WorkingArea; var screenLeftTop = Win32Helper.TransformPixelsToDIP(this, workingArea.X, workingArea.Y); @@ -954,36 +953,36 @@ private void GetDpi(out double dpiX, out double dpiY) } } - private Screen SelectedScreen() + private MonitorInfo SelectedScreen() { - Screen screen; + MonitorInfo screen; switch (_settings.SearchWindowScreen) { case SearchWindowScreens.Cursor: - screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); - break; - case SearchWindowScreens.Primary: - screen = Screen.PrimaryScreen; + screen = MonitorInfo.GetCursorDisplayMonitor(); break; case SearchWindowScreens.Focus: - var foregroundWindowHandle = Win32Helper.GetForegroundWindow(); - screen = Screen.FromHandle(foregroundWindowHandle); + screen = MonitorInfo.GetNearestDisplayMonitor(Win32Helper.GetForegroundWindow()); + break; + case SearchWindowScreens.Primary: + screen = MonitorInfo.GetPrimaryDisplayMonitor(); break; case SearchWindowScreens.Custom: - if (_settings.CustomScreenNumber <= Screen.AllScreens.Length) - screen = Screen.AllScreens[_settings.CustomScreenNumber - 1]; + var allScreens = MonitorInfo.GetDisplayMonitors(); + if (_settings.CustomScreenNumber <= allScreens.Count) + screen = allScreens[_settings.CustomScreenNumber - 1]; else - screen = Screen.AllScreens[0]; + screen = allScreens[0]; break; default: - screen = Screen.AllScreens[0]; + screen = MonitorInfo.GetDisplayMonitors()[0]; break; } - return screen ?? Screen.AllScreens[0]; + return screen ?? MonitorInfo.GetDisplayMonitors()[0]; } - private double HorizonCenter(Screen screen) + private double HorizonCenter(MonitorInfo screen) { var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0); var dip2 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0); @@ -991,7 +990,7 @@ private double HorizonCenter(Screen screen) return left; } - private double VerticalCenter(Screen screen) + private double VerticalCenter(MonitorInfo screen) { var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y); var dip2 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Height); @@ -999,7 +998,7 @@ private double VerticalCenter(Screen screen) return top; } - private double HorizonRight(Screen screen) + private double HorizonRight(MonitorInfo screen) { var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0); var dip2 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0); @@ -1007,14 +1006,14 @@ private double HorizonRight(Screen screen) return left; } - private double HorizonLeft(Screen screen) + private double HorizonLeft(MonitorInfo screen) { var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0); var left = dip1.X + 10; return left; } - public double VerticalTop(Screen screen) + private double VerticalTop(MonitorInfo screen) { var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y); var top = dip1.Y + 10; diff --git a/Flow.Launcher/Msg.xaml.cs b/Flow.Launcher/Msg.xaml.cs index 923c3692f8e..6063e489ca7 100644 --- a/Flow.Launcher/Msg.xaml.cs +++ b/Flow.Launcher/Msg.xaml.cs @@ -1,7 +1,6 @@ using System; using System.IO; using System.Windows; -using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media.Animation; using Flow.Launcher.Infrastructure; @@ -16,7 +15,7 @@ public partial class Msg : Window public Msg() { InitializeComponent(); - var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); + var screen = MonitorInfo.GetCursorDisplayMonitor(); var dipWorkingArea = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, screen.WorkingArea.Height); diff --git a/Flow.Launcher/MsgWithButton.xaml.cs b/Flow.Launcher/MsgWithButton.xaml.cs index 8ccd19c4644..89149c2d4a6 100644 --- a/Flow.Launcher/MsgWithButton.xaml.cs +++ b/Flow.Launcher/MsgWithButton.xaml.cs @@ -1,7 +1,6 @@ using System; using System.IO; using System.Windows; -using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media.Animation; using Flow.Launcher.Infrastructure; @@ -16,7 +15,7 @@ public partial class MsgWithButton : Window public MsgWithButton() { InitializeComponent(); - var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); + var screen = MonitorInfo.GetCursorDisplayMonitor(); var dipWorkingArea = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, screen.WorkingArea.Height); diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs index 21444ccee30..5057ebb4443 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; @@ -111,9 +111,9 @@ public List ScreenNumbers { get { - var screens = Screen.AllScreens; + var screens = MonitorInfo.GetDisplayMonitors(); var screenNumbers = new List(); - for (int i = 1; i <= screens.Length; i++) + for (int i = 1; i <= screens.Count; i++) { screenNumbers.Add(i); } diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index c1c0f96a7bc..b4f6bcf6908 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -10,7 +10,6 @@ using Flow.Launcher.SettingPages.Views; using Flow.Launcher.ViewModel; using ModernWpf.Controls; -using Screen = System.Windows.Forms.Screen; namespace Flow.Launcher; @@ -202,7 +201,7 @@ private void AdjustWindowPosition(ref double top, ref double left) private static bool IsPositionValid(double top, double left) { - foreach (var screen in Screen.AllScreens) + foreach (var screen in MonitorInfo.GetDisplayMonitors()) { var workingArea = screen.WorkingArea; @@ -217,7 +216,7 @@ private static bool IsPositionValid(double top, double left) private double WindowLeft() { - var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); + var screen = MonitorInfo.GetCursorDisplayMonitor(); var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0); var dip2 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0); var left = (dip2.X - ActualWidth) / 2 + dip1.X; @@ -226,7 +225,7 @@ private double WindowLeft() private double WindowTop() { - var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); + var screen = MonitorInfo.GetCursorDisplayMonitor(); var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y); var dip2 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Height); var top = (dip2.Y - ActualHeight) / 2 + dip1.Y - 20; From 1946afbfe8152eb5d130a70f236d257cc9f88789 Mon Sep 17 00:00:00 2001 From: Jack Ye <1160210343@qq.com> Date: Wed, 23 Jul 2025 13:33:22 +0800 Subject: [PATCH 08/15] Fix typos Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- Flow.Launcher.Infrastructure/MonitorInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Flow.Launcher.Infrastructure/MonitorInfo.cs b/Flow.Launcher.Infrastructure/MonitorInfo.cs index 53617f7e959..9a62fc0f4cb 100644 --- a/Flow.Launcher.Infrastructure/MonitorInfo.cs +++ b/Flow.Launcher.Infrastructure/MonitorInfo.cs @@ -165,7 +165,7 @@ internal unsafe MonitorInfo(HMONITOR monitor, RECT* rect) public Rect WorkingArea { get; } /// - /// Gets if the monitor is the the primary display monitor. + /// Gets if the monitor is the primary display monitor. /// public bool IsPrimary => _monitor == PInvoke.MonitorFromWindow(new(IntPtr.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY); From cbbd09b8a500e7a7c14575c51f45acaf290958a0 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 23 Jul 2025 13:41:01 +0800 Subject: [PATCH 09/15] Add cursor info class --- Flow.Launcher.Infrastructure/CursorInfo.cs | 26 +++++++++++++++++++++ Flow.Launcher.Infrastructure/MonitorInfo.cs | 6 +---- 2 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 Flow.Launcher.Infrastructure/CursorInfo.cs diff --git a/Flow.Launcher.Infrastructure/CursorInfo.cs b/Flow.Launcher.Infrastructure/CursorInfo.cs new file mode 100644 index 00000000000..046dc4ba9c1 --- /dev/null +++ b/Flow.Launcher.Infrastructure/CursorInfo.cs @@ -0,0 +1,26 @@ +using System.Drawing; +using System.Runtime.InteropServices; +using Windows.Win32; + +namespace Flow.Launcher.Infrastructure; + +/// +/// Contains full information about a cursor. +/// +/// +/// Use this class to replace the System.Windows.Forms.Cursor class which can cause possible System.PlatformNotSupportedException. +/// +public class CursorInfo +{ + public static Point Position + { + get + { + if (!PInvoke.GetCursorPos(out var pt)) + { + Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); + } + return pt; + } + } +} diff --git a/Flow.Launcher.Infrastructure/MonitorInfo.cs b/Flow.Launcher.Infrastructure/MonitorInfo.cs index 9a62fc0f4cb..a87aab7d8e6 100644 --- a/Flow.Launcher.Infrastructure/MonitorInfo.cs +++ b/Flow.Launcher.Infrastructure/MonitorInfo.cs @@ -102,11 +102,7 @@ public static unsafe MonitorInfo GetPrimaryDisplayMonitor() /// The display monitor that contains the cursor, or null if no monitor is found. public static unsafe MonitorInfo GetCursorDisplayMonitor() { - if (!PInvoke.GetCursorPos(out var pt)) - { - Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); - } - var cursorMonitor = PInvoke.MonitorFromPoint(pt, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST); + var cursorMonitor = PInvoke.MonitorFromPoint(CursorInfo.Position, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST); MonitorInfo cursorMonitorInfo = null; var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) => { From 4f423c47cdf6568e7e0fa2eff6e8a89bcdcabf37 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 23 Jul 2025 13:44:31 +0800 Subject: [PATCH 10/15] Allow all projects to access MonitorInfo & CursorInfo --- Flow.Launcher.Infrastructure/NativeMethods.txt | 8 -------- Flow.Launcher.Plugin/NativeMethods.txt | 10 +++++++++- .../SharedModels}/CursorInfo.cs | 5 ++++- .../SharedModels}/MonitorInfo.cs | 6 +++--- 4 files changed, 16 insertions(+), 13 deletions(-) rename {Flow.Launcher.Infrastructure => Flow.Launcher.Plugin/SharedModels}/CursorInfo.cs (79%) rename {Flow.Launcher.Infrastructure => Flow.Launcher.Plugin/SharedModels}/MonitorInfo.cs (97%) diff --git a/Flow.Launcher.Infrastructure/NativeMethods.txt b/Flow.Launcher.Infrastructure/NativeMethods.txt index 2054bc2c029..e8700425182 100644 --- a/Flow.Launcher.Infrastructure/NativeMethods.txt +++ b/Flow.Launcher.Infrastructure/NativeMethods.txt @@ -34,14 +34,6 @@ WINDOW_STYLE SetLastError WINDOW_EX_STYLE -GetSystemMetrics -EnumDisplayMonitors -MonitorFromWindow -GetMonitorInfo -MONITORINFOEXW -GetCursorPos -MonitorFromPoint - WM_ENTERSIZEMOVE WM_EXITSIZEMOVE WM_NCLBUTTONDBLCLK diff --git a/Flow.Launcher.Plugin/NativeMethods.txt b/Flow.Launcher.Plugin/NativeMethods.txt index 0596691cc7f..901695a8bd8 100644 --- a/Flow.Launcher.Plugin/NativeMethods.txt +++ b/Flow.Launcher.Plugin/NativeMethods.txt @@ -5,4 +5,12 @@ GetWindowTextLength WM_KEYDOWN WM_KEYUP WM_SYSKEYDOWN -WM_SYSKEYUP \ No newline at end of file +WM_SYSKEYUP + +GetSystemMetrics +EnumDisplayMonitors +MonitorFromWindow +GetMonitorInfo +MONITORINFOEXW +GetCursorPos +MonitorFromPoint \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/CursorInfo.cs b/Flow.Launcher.Plugin/SharedModels/CursorInfo.cs similarity index 79% rename from Flow.Launcher.Infrastructure/CursorInfo.cs rename to Flow.Launcher.Plugin/SharedModels/CursorInfo.cs index 046dc4ba9c1..720bf2ae3d2 100644 --- a/Flow.Launcher.Infrastructure/CursorInfo.cs +++ b/Flow.Launcher.Plugin/SharedModels/CursorInfo.cs @@ -2,7 +2,7 @@ using System.Runtime.InteropServices; using Windows.Win32; -namespace Flow.Launcher.Infrastructure; +namespace Flow.Launcher.Plugin.SharedModels; /// /// Contains full information about a cursor. @@ -12,6 +12,9 @@ namespace Flow.Launcher.Infrastructure; /// public class CursorInfo { + /// + /// Gets the current position of the cursor in screen coordinates. + /// public static Point Position { get diff --git a/Flow.Launcher.Infrastructure/MonitorInfo.cs b/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs similarity index 97% rename from Flow.Launcher.Infrastructure/MonitorInfo.cs rename to Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs index a87aab7d8e6..22e09e2f59a 100644 --- a/Flow.Launcher.Infrastructure/MonitorInfo.cs +++ b/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs @@ -7,7 +7,7 @@ using Windows.Win32.Graphics.Gdi; using Windows.Win32.UI.WindowsAndMessaging; -namespace Flow.Launcher.Infrastructure; +namespace Flow.Launcher.Plugin.SharedModels; /// /// Contains full information about a display monitor. @@ -75,7 +75,7 @@ public static unsafe MonitorInfo GetNearestDisplayMonitor(nint hwnd) /// The primary display monitor, or null if no monitor is found. public static unsafe MonitorInfo GetPrimaryDisplayMonitor() { - var primaryMonitor = PInvoke.MonitorFromWindow(new HWND(IntPtr.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY); + var primaryMonitor = PInvoke.MonitorFromWindow(new HWND(nint.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY); MonitorInfo primaryMonitorInfo = null; var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) => { @@ -163,7 +163,7 @@ internal unsafe MonitorInfo(HMONITOR monitor, RECT* rect) /// /// Gets if the monitor is the primary display monitor. /// - public bool IsPrimary => _monitor == PInvoke.MonitorFromWindow(new(IntPtr.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY); + public bool IsPrimary => _monitor == PInvoke.MonitorFromWindow(new(nint.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY); /// public override string ToString() => $"{Name} {Bounds.Width}x{Bounds.Height}"; From 3cfe122c7bb21f69e0b8bcb0e4a4d59bc571e4d3 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 23 Jul 2025 13:51:35 +0800 Subject: [PATCH 11/15] Use new MonitorInfo class class --- Flow.Launcher.Infrastructure/Win32Helper.cs | 1 + Flow.Launcher/MainWindow.xaml.cs | 1 + Flow.Launcher/Msg.xaml.cs | 1 + Flow.Launcher/MsgWithButton.xaml.cs | 1 + Flow.Launcher/SettingWindow.xaml.cs | 1 + .../Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs | 5 +++-- 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Flow.Launcher.Infrastructure/Win32Helper.cs b/Flow.Launcher.Infrastructure/Win32Helper.cs index 84880d68c75..68d38237772 100644 --- a/Flow.Launcher.Infrastructure/Win32Helper.cs +++ b/Flow.Launcher.Infrastructure/Win32Helper.cs @@ -13,6 +13,7 @@ using System.Windows.Markup; using System.Windows.Media; using Flow.Launcher.Infrastructure.UserSettings; +using Flow.Launcher.Plugin.SharedModels; using Microsoft.Win32; using Microsoft.Win32.SafeHandles; using Windows.Win32; diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 429a4aece10..e69de67cf9a 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -23,6 +23,7 @@ using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; +using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.ViewModel; using Microsoft.Win32; using ModernWpf.Controls; diff --git a/Flow.Launcher/Msg.xaml.cs b/Flow.Launcher/Msg.xaml.cs index 6063e489ca7..dd7d4495c5b 100644 --- a/Flow.Launcher/Msg.xaml.cs +++ b/Flow.Launcher/Msg.xaml.cs @@ -4,6 +4,7 @@ using System.Windows.Input; using System.Windows.Media.Animation; using Flow.Launcher.Infrastructure; +using Flow.Launcher.Plugin.SharedModels; namespace Flow.Launcher { diff --git a/Flow.Launcher/MsgWithButton.xaml.cs b/Flow.Launcher/MsgWithButton.xaml.cs index 89149c2d4a6..7ae53e6c599 100644 --- a/Flow.Launcher/MsgWithButton.xaml.cs +++ b/Flow.Launcher/MsgWithButton.xaml.cs @@ -4,6 +4,7 @@ using System.Windows.Input; using System.Windows.Media.Animation; using Flow.Launcher.Infrastructure; +using Flow.Launcher.Plugin.SharedModels; namespace Flow.Launcher { diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index b4f6bcf6908..0e3e6999620 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -7,6 +7,7 @@ using CommunityToolkit.Mvvm.DependencyInjection; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.UserSettings; +using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.SettingPages.Views; using Flow.Launcher.ViewModel; using ModernWpf.Controls; diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs index cbf6f1f8b78..274537cd372 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs @@ -7,6 +7,7 @@ using Flow.Launcher.Plugin.Explorer.Search.Everything; using Flow.Launcher.Plugin.Explorer.Views; using Flow.Launcher.Plugin.SharedCommands; +using Flow.Launcher.Plugin.SharedModels; using Peter; using Path = System.IO.Path; @@ -72,10 +73,10 @@ public static Result CreateResult(Query query, SearchResult result) internal static void ShowNativeContextMenu(string path, ResultType type) { - var screenWithMouseCursor = System.Windows.Forms.Screen.FromPoint(System.Windows.Forms.Cursor.Position); + var screenWithMouseCursor = MonitorInfo.GetCursorDisplayMonitor(); var xOfScreenCenter = screenWithMouseCursor.WorkingArea.Left + screenWithMouseCursor.WorkingArea.Width / 2; var yOfScreenCenter = screenWithMouseCursor.WorkingArea.Top + screenWithMouseCursor.WorkingArea.Height / 2; - var showPosition = new System.Drawing.Point(xOfScreenCenter, yOfScreenCenter); + var showPosition = new System.Drawing.Point((int)xOfScreenCenter, (int)yOfScreenCenter); switch (type) { From 3cd7c3ce009822566cb6f9330cdf092e39198296 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 23 Jul 2025 13:52:31 +0800 Subject: [PATCH 12/15] Remove CursorInfo class --- .../SharedModels/CursorInfo.cs | 29 ------------------- .../SharedModels/MonitorInfo.cs | 9 ++++-- 2 files changed, 6 insertions(+), 32 deletions(-) delete mode 100644 Flow.Launcher.Plugin/SharedModels/CursorInfo.cs diff --git a/Flow.Launcher.Plugin/SharedModels/CursorInfo.cs b/Flow.Launcher.Plugin/SharedModels/CursorInfo.cs deleted file mode 100644 index 720bf2ae3d2..00000000000 --- a/Flow.Launcher.Plugin/SharedModels/CursorInfo.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Drawing; -using System.Runtime.InteropServices; -using Windows.Win32; - -namespace Flow.Launcher.Plugin.SharedModels; - -/// -/// Contains full information about a cursor. -/// -/// -/// Use this class to replace the System.Windows.Forms.Cursor class which can cause possible System.PlatformNotSupportedException. -/// -public class CursorInfo -{ - /// - /// Gets the current position of the cursor in screen coordinates. - /// - public static Point Position - { - get - { - if (!PInvoke.GetCursorPos(out var pt)) - { - Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); - } - return pt; - } - } -} diff --git a/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs b/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs index 22e09e2f59a..6808c9c9104 100644 --- a/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs +++ b/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Runtime.InteropServices; using System.Windows; using Windows.Win32; @@ -102,7 +101,11 @@ public static unsafe MonitorInfo GetPrimaryDisplayMonitor() /// The display monitor that contains the cursor, or null if no monitor is found. public static unsafe MonitorInfo GetCursorDisplayMonitor() { - var cursorMonitor = PInvoke.MonitorFromPoint(CursorInfo.Position, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST); + if (!PInvoke.GetCursorPos(out var pt)) + { + Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); + } + var cursorMonitor = PInvoke.MonitorFromPoint(pt, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST); MonitorInfo cursorMonitorInfo = null; var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) => { From 74306f0a7616d6807ee992f3b4e2ee78c617f84c Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 23 Jul 2025 14:15:20 +0800 Subject: [PATCH 13/15] Use PInvoke to register SystemEvents --- .../NativeMethods.txt | 5 +++- Flow.Launcher.Infrastructure/Win32Helper.cs | 3 +++ Flow.Launcher/MainWindow.xaml.cs | 23 ++++++++----------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Flow.Launcher.Infrastructure/NativeMethods.txt b/Flow.Launcher.Infrastructure/NativeMethods.txt index e8700425182..eb844dd7ca0 100644 --- a/Flow.Launcher.Infrastructure/NativeMethods.txt +++ b/Flow.Launcher.Infrastructure/NativeMethods.txt @@ -83,4 +83,7 @@ WM_GETTEXT OpenProcess QueryFullProcessImageName EVENT_OBJECT_HIDE -EVENT_SYSTEM_DIALOGEND \ No newline at end of file +EVENT_SYSTEM_DIALOGEND + +WM_POWERBROADCAST +PBT_APMRESUMEAUTOMATIC \ No newline at end of file diff --git a/Flow.Launcher.Infrastructure/Win32Helper.cs b/Flow.Launcher.Infrastructure/Win32Helper.cs index 68d38237772..7cc644eaa32 100644 --- a/Flow.Launcher.Infrastructure/Win32Helper.cs +++ b/Flow.Launcher.Infrastructure/Win32Helper.cs @@ -338,6 +338,9 @@ public static Point TransformPixelsToDIP(Visual visual, double unitX, double uni public const int SC_MAXIMIZE = (int)PInvoke.SC_MAXIMIZE; public const int SC_MINIMIZE = (int)PInvoke.SC_MINIMIZE; + public const int WM_POWERBROADCAST = (int)PInvoke.WM_POWERBROADCAST; + public const int PBT_APMRESUMEAUTOMATIC = (int)PInvoke.PBT_APMRESUMEAUTOMATIC; + #endregion #region Window Handle diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index e69de67cf9a..8eb41e032fa 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -25,7 +25,6 @@ using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.ViewModel; -using Microsoft.Win32; using ModernWpf.Controls; using DataObject = System.Windows.DataObject; using Key = System.Windows.Input.Key; @@ -96,7 +95,6 @@ public MainWindow() InitSoundEffects(); DataObject.AddPastingHandler(QueryTextBox, QueryTextBox_OnPaste); - SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; _viewModel.ActualApplicationThemeChanged += ViewModel_ActualApplicationThemeChanged; } @@ -670,6 +668,16 @@ private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref b handled = true; } break; + case Win32Helper.WM_POWERBROADCAST: // Handle power broadcast messages + // https://learn.microsoft.com/en-us/windows/win32/power/wm-powerbroadcast + if (wParam.ToInt32() == Win32Helper.PBT_APMRESUMEAUTOMATIC) + { + // Fix for sound not playing after sleep / hibernate + // https://stackoverflow.com/questions/64805186/mediaplayer-doesnt-play-after-computer-sleeps + InitSoundEffects(); + } + handled = true; + break; } return IntPtr.Zero; @@ -679,16 +687,6 @@ private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref b #region Window Sound Effects - private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) - { - // Fix for sound not playing after sleep / hibernate - // https://stackoverflow.com/questions/64805186/mediaplayer-doesnt-play-after-computer-sleeps - if (e.Mode == PowerModes.Resume) - { - InitSoundEffects(); - } - } - private void InitSoundEffects() { if (_settings.WMPInstalled) @@ -1443,7 +1441,6 @@ protected virtual void Dispose(bool disposing) animationSoundWMP?.Close(); animationSoundWPF?.Dispose(); _viewModel.ActualApplicationThemeChanged -= ViewModel_ActualApplicationThemeChanged; - SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; } _disposed = true; From c42f84f246721accc1b860c616da725a354bd1d2 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 24 Jul 2025 16:39:58 +0800 Subject: [PATCH 14/15] Update Pinyin description --- Flow.Launcher/Languages/en.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index f3756841901..0bea11c12d2 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -121,7 +121,7 @@ Low Regular Search with Pinyin - Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese. + Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese. Enabling it can introduce more memory usage during searching. Use Double Pinyin Use Double Pinyin instead of Full Pinyin to search. Double Pinyin Schema From 0564e5814b242b4efa2f711ab28e28bf44290db9 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Thu, 24 Jul 2025 16:54:19 +0800 Subject: [PATCH 15/15] Update description --- Flow.Launcher/Languages/en.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 0bea11c12d2..bf6cb674e95 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -121,7 +121,7 @@ Low Regular Search with Pinyin - Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese. Enabling it can introduce more memory usage during searching. + Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search. Use Double Pinyin Use Double Pinyin instead of Full Pinyin to search. Double Pinyin Schema