diff --git a/Flow.Launcher.Core/Flow.Launcher.Core.csproj b/Flow.Launcher.Core/Flow.Launcher.Core.csproj
index b31793450..527950061 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 0c513951b..caec08ebf 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",
@@ -78,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",
@@ -85,36 +95,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 +133,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 +161,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,32 +171,50 @@
},
"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",
+ "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": "4.7.10",
- "contentHash": "rcegW7kYOCjl7wX0SzsqpPBqnJ51JKi1WkYb6QBVX0Wc5IgH19Pv4t/co+T0s06OS0Ne44xgkY/mHg0PdrmJow=="
+ "resolved": "6.0.1",
+ "contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug=="
},
- "PropertyChanged.Fody": {
+ "NLog.OutputDebugString": {
"type": "Transitive",
- "resolved": "3.4.0",
- "contentHash": "IAZyq0uolKo2WYm4mjx+q7A8fSGFT0x2e1s3y+ODn4JI0kqTDoo9GF2tdaypUzRFJZfdMxfC5HZW9QzdJLtOnA==",
+ "resolved": "6.0.1",
+ "contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==",
"dependencies": {
- "Fody": "6.5.1"
+ "NLog": "6.0.1"
}
},
+ "SharpVectors.Wpf": {
+ "type": "Transitive",
+ "resolved": "1.8.4.2",
+ "contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng=="
+ },
"Splat": {
"type": "Transitive",
"resolved": "1.6.2",
@@ -185,10 +222,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": {
@@ -203,8 +240,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",
@@ -215,22 +252,24 @@
"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, )",
- "NLog": "[4.7.10, )",
- "PropertyChanged.Fody": "[3.4.0, )",
- "System.Drawing.Common": "[9.0.2, )",
- "ToolGood.Words.Pinyin": "[3.0.1.4, )"
+ "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, )",
+ "System.Drawing.Common": "[9.0.7, )",
+ "ToolGood.Words.Pinyin": "[3.1.0.3, )"
}
},
"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 390de341d..51b1d5175 100644
--- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj
+++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj
@@ -54,29 +54,28 @@
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
+
all
-
-
-
-
+
+
\ No newline at end of file
diff --git a/Flow.Launcher.Infrastructure/NativeMethods.txt b/Flow.Launcher.Infrastructure/NativeMethods.txt
index 965ab6caa..eb844dd7c 100644
--- a/Flow.Launcher.Infrastructure/NativeMethods.txt
+++ b/Flow.Launcher.Infrastructure/NativeMethods.txt
@@ -34,12 +34,6 @@ WINDOW_STYLE
SetLastError
WINDOW_EX_STYLE
-GetSystemMetrics
-EnumDisplayMonitors
-MonitorFromWindow
-GetMonitorInfo
-MONITORINFOEXW
-
WM_ENTERSIZEMOVE
WM_EXITSIZEMOVE
WM_NCLBUTTONDBLCLK
@@ -90,3 +84,6 @@ OpenProcess
QueryFullProcessImageName
EVENT_OBJECT_HIDE
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 bb1996c3b..7cc644eaa 100644
--- a/Flow.Launcher.Infrastructure/Win32Helper.cs
+++ b/Flow.Launcher.Infrastructure/Win32Helper.cs
@@ -13,6 +13,7 @@ using System.Windows.Interop;
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;
@@ -120,9 +121,9 @@ namespace Flow.Launcher.Infrastructure
#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)
@@ -286,15 +287,15 @@ namespace Flow.Launcher.Infrastructure
{
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;
}
}
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
@@ -337,6 +338,9 @@ namespace Flow.Launcher.Infrastructure
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
@@ -497,7 +501,7 @@ namespace Flow.Launcher.Infrastructure
/// 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;
@@ -508,7 +512,7 @@ namespace Flow.Launcher.Infrastructure
hwnd,
PInvoke.WM_INPUTLANGCHANGEREQUEST,
PInvoke.INPUTLANGCHANGE_FORWARD,
- _previousLayout.Value
+ new LPARAM((nint)_previousLayout.Value)
);
_previousLayout = HKL.Null;
@@ -816,20 +820,17 @@ namespace Flow.Launcher.Infrastructure
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;
diff --git a/Flow.Launcher.Infrastructure/packages.lock.json b/Flow.Launcher.Infrastructure/packages.lock.json
index f38f91ef9..87b4bb6da 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,70 +25,101 @@
},
"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=="
+ },
+ "InputSimulator": {
+ "type": "Direct",
+ "requested": "[1.0.4, )",
+ "resolved": "1.0.4",
+ "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA=="
},
"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"
+ }
+ },
+ "NHotkey.Wpf": {
+ "type": "Direct",
+ "requested": "[3.0.0, )",
+ "resolved": "3.0.0",
+ "contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==",
+ "dependencies": {
+ "NHotkey": "3.0.0"
}
},
"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",
- "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": {
"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",
@@ -97,18 +128,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 +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=="
},
"Microsoft.Windows.SDK.Win32Docs": {
"type": "Transitive",
@@ -127,17 +166,22 @@
},
"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"
}
},
+ "NHotkey": {
+ "type": "Transitive",
+ "resolved": "3.0.0",
+ "contentHash": "IEghs0QqWsQYH0uUmvIl0Ye6RaebWRh38eB6ToOkDnQucTYRGFOgtig0gSxlwCszTilYFz3n1ZuY762x+kDR3A=="
+ },
"System.Reflection.Metadata": {
"type": "Transitive",
"resolved": "5.0.0",
@@ -146,8 +190,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 a4ef39ac3..eee8d5f4e 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/Interfaces/IPublicAPI.cs b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
index 269635d5e..b2ad8a4ae 100644
--- a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
+++ b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
@@ -616,5 +616,17 @@ namespace Flow.Launcher.Plugin
/// Invoked when the actual theme of the application has changed. Currently, the plugin will continue to be subscribed even if it is turned off.
///
event ActualApplicationThemeChangedEventHandler ActualApplicationThemeChanged;
+
+ ///
+ /// Get the user data directory of Flow Launcher.
+ ///
+ ///
+ string GetDataDirectory();
+
+ ///
+ /// Get the log directory of Flow Launcher.
+ ///
+ ///
+ string GetLogDirectory();
}
}
diff --git a/Flow.Launcher.Plugin/NativeMethods.txt b/Flow.Launcher.Plugin/NativeMethods.txt
index 0596691cc..901695a8b 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/MonitorInfo.cs b/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs
similarity index 52%
rename from Flow.Launcher.Infrastructure/MonitorInfo.cs
rename to Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs
index 3221708c1..6808c9c91 100644
--- a/Flow.Launcher.Infrastructure/MonitorInfo.cs
+++ b/Flow.Launcher.Plugin/SharedModels/MonitorInfo.cs
@@ -1,5 +1,4 @@
using System.Collections.Generic;
-using System;
using System.Runtime.InteropServices;
using System.Windows;
using Windows.Win32;
@@ -7,13 +6,16 @@ using Windows.Win32.Foundation;
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.
-/// 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 +25,14 @@ internal class MonitorInfo
{
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 +45,11 @@ internal class MonitorInfo
///
/// 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 +60,7 @@ internal class MonitorInfo
});
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 +68,75 @@ internal class MonitorInfo
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(nint.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 +153,7 @@ internal class MonitorInfo
///
/// 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,15 +161,15 @@ internal class MonitorInfo
///
/// 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.
+ /// 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} {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.Plugin/packages.lock.json b/Flow.Launcher.Plugin/packages.lock.json
index 6cdf96e07..af835c598 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 f04a9dcc9..33479c5a0 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 67939af14..7db769c70 100644
--- a/Flow.Launcher/Flow.Launcher.csproj
+++ b/Flow.Launcher/Flow.Launcher.csproj
@@ -86,7 +86,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -95,19 +95,18 @@
-
-
-
+
+
-
+
all
-
-
+
+
diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index f37568419..bf6cb674e 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.
+ 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
diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs
index 2c7233218..a146e0b4b 100644
--- a/Flow.Launcher/MainWindow.xaml.cs
+++ b/Flow.Launcher/MainWindow.xaml.cs
@@ -23,14 +23,13 @@ using Flow.Launcher.Infrastructure.DialogJump;
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;
using DataObject = System.Windows.DataObject;
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
{
@@ -96,7 +95,6 @@ namespace Flow.Launcher
InitSoundEffects();
DataObject.AddPastingHandler(QueryTextBox, QueryTextBox_OnPaste);
- SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
_viewModel.ActualApplicationThemeChanged += ViewModel_ActualApplicationThemeChanged;
}
@@ -532,7 +530,7 @@ namespace Flow.Launcher
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);
@@ -670,6 +668,16 @@ namespace Flow.Launcher
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 @@ namespace Flow.Launcher
#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)
@@ -954,36 +952,36 @@ namespace Flow.Launcher
}
}
- 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 +989,7 @@ namespace Flow.Launcher
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 +997,7 @@ namespace Flow.Launcher
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 +1005,14 @@ namespace Flow.Launcher
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;
@@ -1443,7 +1441,6 @@ namespace Flow.Launcher
animationSoundWMP?.Close();
animationSoundWPF?.Dispose();
_viewModel.ActualApplicationThemeChanged -= ViewModel_ActualApplicationThemeChanged;
- SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;
}
_disposed = true;
diff --git a/Flow.Launcher/Msg.xaml.cs b/Flow.Launcher/Msg.xaml.cs
index 923c3692f..dd7d4495c 100644
--- a/Flow.Launcher/Msg.xaml.cs
+++ b/Flow.Launcher/Msg.xaml.cs
@@ -1,10 +1,10 @@
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;
+using Flow.Launcher.Plugin.SharedModels;
namespace Flow.Launcher
{
@@ -16,7 +16,7 @@ namespace Flow.Launcher
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 8ccd19c46..7ae53e6c5 100644
--- a/Flow.Launcher/MsgWithButton.xaml.cs
+++ b/Flow.Launcher/MsgWithButton.xaml.cs
@@ -1,10 +1,10 @@
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;
+using Flow.Launcher.Plugin.SharedModels;
namespace Flow.Launcher
{
@@ -16,7 +16,7 @@ namespace Flow.Launcher
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/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs
index 40a582fb9..7d5359378 100644
--- a/Flow.Launcher/PublicAPIInstance.cs
+++ b/Flow.Launcher/PublicAPIInstance.cs
@@ -598,6 +598,10 @@ namespace Flow.Launcher
remove => _mainVM.ActualApplicationThemeChanged -= value;
}
+ public string GetDataDirectory() => DataLocation.DataDirectory();
+
+ public string GetLogDirectory() => DataLocation.VersionLogDirectory;
+
#endregion
#region Private Methods
diff --git a/Flow.Launcher/ReportWindow.xaml.cs b/Flow.Launcher/ReportWindow.xaml.cs
index 24801cf52..ae0767934 100644
--- a/Flow.Launcher/ReportWindow.xaml.cs
+++ b/Flow.Launcher/ReportWindow.xaml.cs
@@ -1,15 +1,15 @@
-using Flow.Launcher.Core.ExternalPlugins;
-using System;
+using System;
using System.Globalization;
using System.IO;
-using System.Text;
using System.Linq;
+using System.Text;
using System.Windows;
using System.Windows.Documents;
+using Flow.Launcher.Core.ExternalPlugins;
using Flow.Launcher.Helper;
using Flow.Launcher.Infrastructure;
-using Flow.Launcher.Plugin.SharedCommands;
using Flow.Launcher.Infrastructure.UserSettings;
+using Flow.Launcher.Plugin.SharedCommands;
namespace Flow.Launcher
{
@@ -44,7 +44,7 @@ namespace Flow.Launcher
var websiteUrl = exception switch
{
- FlowPluginException pluginException =>GetIssuesUrl(pluginException.Metadata.Website),
+ FlowPluginException pluginException => GetIssuesUrl(pluginException.Metadata.Website),
_ => Constant.IssuesUrl
};
@@ -73,17 +73,36 @@ namespace Flow.Launcher
Margin = new Thickness(0)
};
- var link = new Hyperlink
+ Hyperlink link = null;
+ try
{
- IsEnabled = true
- };
- link.Inlines.Add(url);
- link.NavigateUri = new Uri(url);
- link.Click += (s, e) => SearchWeb.OpenInBrowserTab(url);
+ var uri = new Uri(url);
+
+ link = new Hyperlink
+ {
+ IsEnabled = true
+ };
+ link.Inlines.Add(url);
+ link.NavigateUri = uri;
+ link.Click += (s, e) => SearchWeb.OpenInBrowserTab(url);
+ }
+ catch (Exception)
+ {
+ // Leave link as null if the URL is invalid
+ }
paragraph.Inlines.Add(textBeforeUrl);
paragraph.Inlines.Add(" ");
- paragraph.Inlines.Add(link);
+ if (link is null)
+ {
+ // Add the URL as plain text if it is invalid
+ paragraph.Inlines.Add(url);
+ }
+ else
+ {
+ // Add the hyperlink if it is valid
+ paragraph.Inlines.Add(link);
+ }
paragraph.Inlines.Add("\n");
return paragraph;
diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs
index 21444ccee..5057ebb44 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 partial class SettingsPaneGeneralViewModel : BaseModel
{
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/SettingPages/Views/SettingsPaneHotkey.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml
index c69053629..d82d6baa0 100644
--- a/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml
+++ b/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml
@@ -76,6 +76,7 @@
DialogJump.JumpToPathAsync(DialogWindowHandle, dialogJumpResult.DialogJumpPath));
- }
+ Win32Helper.SetForegroundWindow(DialogWindowHandle);
+ _ = Task.Run(() => DialogJump.JumpToPathAsync(DialogWindowHandle, dialogJumpResult.DialogJumpPath));
+ }
+ else
+ {
+ App.API.LogError(ClassName, "DialogJumpResult expected but got a different result type.");
}
}
// For query mode, we execute the result
diff --git a/Flow.Launcher/packages.lock.json b/Flow.Launcher/packages.lock.json
index 017065044..1047b1f3f 100644
--- a/Flow.Launcher/packages.lock.json
+++ b/Flow.Launcher/packages.lock.json
@@ -16,64 +16,96 @@
},
"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": {
+ "MdXaml": {
"type": "Direct",
- "requested": "[1.0.4, )",
- "resolved": "1.0.4",
- "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA=="
- },
- "Jack251970.TaskScheduler": {
- "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==",
+ "requested": "[9.0.7, )",
+ "resolved": "9.0.7",
+ "contentHash": "Dkv55VfitwJjPUk9mFHxT9MJAd8su7eJNaCHhBU/Y9xFqw3ZNHwrpeptXeaXiaPtfQq+alMmawIz1Impk5pHkQ==",
"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"
+ "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,39 +120,19 @@
"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=="
},
- "NHotkey.Wpf": {
- "type": "Direct",
- "requested": "[3.0.0, )",
- "resolved": "3.0.0",
- "contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==",
- "dependencies": {
- "NHotkey": "3.0.0"
- }
- },
"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 +141,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 +173,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 +189,25 @@
"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=="
+ },
+ "InputSimulator": {
+ "type": "Transitive",
+ "resolved": "1.0.4",
+ "contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA=="
},
"JetBrains.Annotations": {
"type": "Transitive",
@@ -173,262 +216,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 +503,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 +552,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,28 +562,54 @@
},
"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",
"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": "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",
+ "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",
@@ -538,34 +628,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": "7.0.1",
- "contentHash": "T9SLFxzDp0SreCffRDXSAS5G+lq6E8qP4knHS2IBjwCdx2KEvGnGZsq7gFpselYOda7l6gXsJMD93TQsFj/URA=="
+ "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": "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.2"
+ "Microsoft.Win32.SystemEvents": "9.0.7"
+ }
+ },
+ "System.Globalization": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
+ "dependencies": {
+ "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 +710,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 +744,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 +785,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=="
- },
- "System.Text.Json": {
- "type": "Transitive",
- "resolved": "7.0.0",
- "contentHash": "DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==",
+ "resolved": "4.3.0",
+ "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"dependencies": {
- "System.Text.Encodings.Web": "7.0.0"
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Threading": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
+ "dependencies": {
+ "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": {
@@ -613,8 +821,13 @@
},
"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",
+ "resolved": "2.0.2",
+ "contentHash": "B0j9SqtThyHVTiOPvu6yR+39Te0g3o+7Jjb+qEm7+Iz1HRqbE5/4QV+ntHWOYYBPOUFr9x1mdzGl/EzWP+nKiA=="
},
"YamlDotNet": {
"type": "Transitive",
@@ -625,12 +838,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 +852,24 @@
"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, )",
- "NLog": "[4.7.10, )",
- "PropertyChanged.Fody": "[3.4.0, )",
- "System.Drawing.Common": "[9.0.2, )",
- "ToolGood.Words.Pinyin": "[3.0.1.4, )"
+ "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, )",
+ "System.Drawing.Common": "[9.0.7, )",
+ "ToolGood.Words.Pinyin": "[3.1.0.3, )"
}
},
"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 fdd41c28d..953b7a54e 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 ea0803978..b444fb8f6 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.Explorer/Search/ResultManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs
index cbf6f1f8b..274537cd3 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs
@@ -7,6 +7,7 @@ using System.Windows.Input;
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 @@ namespace Flow.Launcher.Plugin.Explorer.Search
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)
{
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 cd310fb35..2da97ebbd 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 386782905..cea34f7dc 100644
--- a/Plugins/Flow.Launcher.Plugin.ProcessKiller/ProcessHelper.cs
+++ b/Plugins/Flow.Launcher.Plugin.ProcessKiller/ProcessHelper.cs
@@ -163,23 +163,20 @@ namespace Flow.Launcher.Plugin.ProcessKiller
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 0c45a8590..cb2b6470b 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 fac3ab181..5c2f6f976 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs
@@ -27,28 +27,36 @@ namespace Flow.Launcher.Plugin.Program.Programs
// 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 999003fd8..8e54e1894 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj
@@ -37,7 +37,6 @@
-
@@ -59,7 +58,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/en.xaml
index ad3f8553b..56899eef3 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/en.xaml
@@ -63,6 +63,8 @@
Are you sure you want to restart the computer?
Are you sure you want to restart the computer with Advanced Boot Options?
Are you sure you want to log off?
+ Error
+ Failed to empty the recycle bin. This might happen if:{0}- Some items are currently in use{0}- Some items can't be deleted due to permissions{0}Please close any applications that might be using these files and try again.
Command Keyword Setting
Custom Command Keyword
diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Main.cs b/Plugins/Flow.Launcher.Plugin.Sys/Main.cs
index d2dcf6e5a..77278a054 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Main.cs
@@ -5,8 +5,6 @@ using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows;
-using Flow.Launcher.Infrastructure;
-using Flow.Launcher.Infrastructure.UserSettings;
using Windows.Win32;
using Windows.Win32.Foundation;
using Windows.Win32.Security;
@@ -52,6 +50,8 @@ namespace Flow.Launcher.Plugin.Sys
private const SHUTDOWN_REASON REASON = SHUTDOWN_REASON.SHTDN_REASON_MAJOR_OTHER |
SHUTDOWN_REASON.SHTDN_REASON_FLAG_PLANNED;
+ private const string Documentation = "https://flowlauncher.com/docs/#/usage-tips";
+
private PluginInitContext _context;
private Settings _settings;
private ThemeSelector _themeSelector;
@@ -338,11 +338,9 @@ namespace Flow.Launcher.Plugin.Sys
var result = PInvoke.SHEmptyRecycleBin(new(), string.Empty, 0);
if (result != HRESULT.S_OK && result != HRESULT.E_UNEXPECTED)
{
- _context.API.ShowMsgBox("Failed to empty the recycle bin. This might happen if:\n" +
- "- A file in the recycle bin is in use\n" +
- "- You don't have permission to delete some items\n" +
- "Please close any applications that might be using these files and try again.",
- "Error",
+ _context.API.ShowMsgBox(
+ string.Format(_context.API.GetTranslation("flowlauncher_plugin_sys_dlgtext_empty_recycle_bin_failed"), Environment.NewLine),
+ _context.API.GetTranslation("flowlauncher_plugin_sys_dlgtitle_error"),
MessageBoxButton.OK, MessageBoxImage.Error);
}
@@ -404,6 +402,8 @@ namespace Flow.Launcher.Plugin.Sys
IcoPath = "Images\\app.png",
Action = c =>
{
+ // Hide the window first then open setting dialog because main window can be topmost window which will still display on top of the setting dialog for a while
+ _context.API.HideMainWindow();
_context.API.OpenSettingDialog();
return true;
}
@@ -445,11 +445,11 @@ namespace Flow.Launcher.Plugin.Sys
Glyph = new GlyphInfo (FontFamily:"/Resources/#Segoe Fluent Icons", Glyph:"\xf12b"),
Title = "Open Log Location",
IcoPath = "Images\\app.png",
- CopyText = DataLocation.VersionLogDirectory,
- AutoCompleteText = DataLocation.VersionLogDirectory,
+ CopyText = _context.API.GetLogDirectory(),
+ AutoCompleteText = _context.API.GetLogDirectory(),
Action = c =>
{
- _context.API.OpenDirectory(DataLocation.VersionLogDirectory);
+ _context.API.OpenDirectory(_context.API.GetLogDirectory());
return true;
}
},
@@ -458,11 +458,11 @@ namespace Flow.Launcher.Plugin.Sys
Title = "Flow Launcher Tips",
Glyph = new GlyphInfo (FontFamily:"/Resources/#Segoe Fluent Icons", Glyph:"\xe897"),
IcoPath = "Images\\app.png",
- CopyText = Constant.Documentation,
- AutoCompleteText = Constant.Documentation,
+ CopyText = Documentation,
+ AutoCompleteText = Documentation,
Action = c =>
{
- _context.API.OpenUrl(Constant.Documentation);
+ _context.API.OpenUrl(Documentation);
return true;
}
},
@@ -471,11 +471,11 @@ namespace Flow.Launcher.Plugin.Sys
Title = "Flow Launcher UserData Folder",
Glyph = new GlyphInfo (FontFamily:"/Resources/#Segoe Fluent Icons", Glyph:"\xf12b"),
IcoPath = "Images\\app.png",
- CopyText = DataLocation.DataDirectory(),
- AutoCompleteText = DataLocation.DataDirectory(),
+ CopyText = _context.API.GetDataDirectory(),
+ AutoCompleteText = _context.API.GetDataDirectory(),
Action = c =>
{
- _context.API.OpenDirectory(DataLocation.DataDirectory());
+ _context.API.OpenDirectory(_context.API.GetDataDirectory());
return true;
}
},