mirror of
https://github.com/ckaczor/FloatingStatusWindow.git
synced 2026-03-13 11:04:18 -04:00
Send identify message with a timeout
This commit is contained in:
@@ -15,6 +15,16 @@ public static partial class WindowManager
|
|||||||
Allow = 1
|
Allow = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
private enum SendMessageTimeoutFlags : uint
|
||||||
|
{
|
||||||
|
Normal = 0x0,
|
||||||
|
Block = 0x1,
|
||||||
|
AbortIfHung = 0x2,
|
||||||
|
NoTimeoutIfNotHung = 0x8,
|
||||||
|
ErrorOnExit = 0x20
|
||||||
|
}
|
||||||
|
|
||||||
[LibraryImport("user32.dll")]
|
[LibraryImport("user32.dll")]
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
private static partial void EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
|
private static partial void EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
|
||||||
@@ -31,6 +41,17 @@ public static partial class WindowManager
|
|||||||
[LibraryImport("user32.dll", EntryPoint = "SendMessageW", SetLastError = true)]
|
[LibraryImport("user32.dll", EntryPoint = "SendMessageW", SetLastError = true)]
|
||||||
private static partial IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
|
private static partial IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
|
||||||
|
|
||||||
|
[LibraryImport("user32.dll", EntryPoint = "SendMessageTimeoutW", SetLastError = true)]
|
||||||
|
private static partial IntPtr SendMessageTimeout(
|
||||||
|
IntPtr windowHandle,
|
||||||
|
int msg,
|
||||||
|
IntPtr wParam,
|
||||||
|
IntPtr lParam,
|
||||||
|
SendMessageTimeoutFlags flags,
|
||||||
|
uint timeout,
|
||||||
|
out IntPtr result);
|
||||||
|
|
||||||
|
|
||||||
[LibraryImport("user32.dll", SetLastError = true)]
|
[LibraryImport("user32.dll", SetLastError = true)]
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
private static partial void ChangeWindowMessageFilterEx(IntPtr hWnd, int msg, ChangeWindowMessageFilterExAction action, IntPtr changeInfo);
|
private static partial void ChangeWindowMessageFilterEx(IntPtr hWnd, int msg, ChangeWindowMessageFilterExAction action, IntPtr changeInfo);
|
||||||
@@ -101,7 +122,7 @@ public static partial class WindowManager
|
|||||||
if (hWnd == _excludeHandle)
|
if (hWnd == _excludeHandle)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
var identifyResult = SendMessage(hWnd, IdentifyMessage, IntPtr.Zero, IntPtr.Zero);
|
SendMessageTimeout(hWnd, IdentifyMessage, IntPtr.Zero, IntPtr.Zero, SendMessageTimeoutFlags.Normal, 100, out var identifyResult);
|
||||||
|
|
||||||
if (identifyResult == IdentifyMessage)
|
if (identifyResult == IdentifyMessage)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user