Fix 32bit support

This commit is contained in:
Peter Kirmeier 2022-11-12 19:31:47 +01:00
parent 27c428602b
commit 6db7226249

View file

@ -26,23 +26,46 @@ namespace SystemTrayMenu.DllImports
{
WindowInteropHelper wndHelper = new WindowInteropHelper(window);
int exStyle = (int)GetWindowLongPtr(wndHelper.Handle, GWL_EXSTYLE);
exStyle |= WS_EX_TOOLWINDOW; // do not show when user presses alt + tab
SetWindowLongPtr(wndHelper.Handle, GWL_EXSTYLE, (IntPtr)exStyle);
if (Environment.Is64BitProcess)
{
long exStyle = (long)GetWindowLongPtr(wndHelper.Handle, GWL_EXSTYLE);
exStyle |= WS_EX_TOOLWINDOW; // do not show when user presses alt + tab
SetWindowLongPtr(wndHelper.Handle, GWL_EXSTYLE, (IntPtr)exStyle);
}
else
{
int exStyle = (int)GetWindowLong(wndHelper.Handle, GWL_EXSTYLE);
exStyle |= WS_EX_TOOLWINDOW; // do not show when user presses alt + tab
SetWindowLong(wndHelper.Handle, GWL_EXSTYLE, (IntPtr)exStyle);
}
}
/// <summary>
/// https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowlongw .
/// </summary>
[SupportedOSPlatform("windows")]
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
private static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);
/// <summary>
/// https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowlongptrw .
/// </summary>
[SupportedOSPlatform("windows")]
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
private static extern IntPtr GetWindowLongPtr(IntPtr hWnd, int nIndex);
/// <summary>
/// https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowlongw .
/// </summary>
[SupportedOSPlatform("windows")]
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
private static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
/// <summary>
/// https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowlongptrw .
/// </summary>
[SupportedOSPlatform("windows")]
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
private static extern IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
}
}