diff --git a/Core/Utils/NativeMethods.cs b/Core/Utils/NativeMethods.cs index e14e1030..8fe77c76 100644 --- a/Core/Utils/NativeMethods.cs +++ b/Core/Utils/NativeMethods.cs @@ -68,6 +68,9 @@ private struct MSLLHOOKSTRUCT{ [DllImport("user32.dll")] public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, int wParam, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, IntPtr lParam); [DllImport("user32.dll")] public static extern uint RegisterWindowMessage(string messageName); diff --git a/Program.cs b/Program.cs index dffd1245..1ac12c63 100644 --- a/Program.cs +++ b/Program.cs @@ -100,13 +100,13 @@ private static void Main(){ if (lockResult == LockManager.Result.HasProcess){ if (LockManager.LockingProcess.MainWindowHandle == IntPtr.Zero){ // restore if the original process is in tray - NativeMethods.SendMessage(NativeMethods.HWND_BROADCAST, WindowRestoreMessage, LockManager.LockingProcess.Id, IntPtr.Zero); + NativeMethods.PostMessage(NativeMethods.HWND_BROADCAST, WindowRestoreMessage, LockManager.LockingProcess.Id, IntPtr.Zero); if (WindowsUtils.TrySleepUntil(() => { LockManager.LockingProcess.Refresh(); return LockManager.LockingProcess.HasExited || (LockManager.LockingProcess.MainWindowHandle != IntPtr.Zero && LockManager.LockingProcess.Responding); }, 2000, 250)){ - return; // should trigger on first attempt if succeeded, but wait just in case + return; } }