diff --git a/GreenshotPlugin/Core/WindowsHelper.cs b/GreenshotPlugin/Core/WindowsHelper.cs index 8c7ec42ef..3b1108b6c 100644 --- a/GreenshotPlugin/Core/WindowsHelper.cs +++ b/GreenshotPlugin/Core/WindowsHelper.cs @@ -776,10 +776,10 @@ namespace GreenshotPlugin.Core { /// public WindowStyleFlags WindowStyle { get { - return (WindowStyleFlags)User32.GetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_STYLE); + return (WindowStyleFlags)User32.GetWindowLongWrapper(this.hWnd, (int)WindowLongIndex.GWL_STYLE); } set { - User32.SetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_STYLE, (uint)value); + User32.SetWindowLongWrapper(this.hWnd, (int)WindowLongIndex.GWL_STYLE, (uint)value); } } @@ -802,10 +802,10 @@ namespace GreenshotPlugin.Core { /// public ExtendedWindowStyleFlags ExtendedWindowStyle { get { - return (ExtendedWindowStyleFlags)User32.GetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_EXSTYLE); + return (ExtendedWindowStyleFlags)User32.GetWindowLongWrapper(this.hWnd, (int)WindowLongIndex.GWL_EXSTYLE); } set { - User32.SetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_EXSTYLE, (uint)value); + User32.SetWindowLongWrapper(this.hWnd, (int)WindowLongIndex.GWL_EXSTYLE, (uint)value); } } diff --git a/GreenshotPlugin/UnmanagedHelpers/User32.cs b/GreenshotPlugin/UnmanagedHelpers/User32.cs index 7efb531a3..6c9019e44 100644 --- a/GreenshotPlugin/UnmanagedHelpers/User32.cs +++ b/GreenshotPlugin/UnmanagedHelpers/User32.cs @@ -114,11 +114,13 @@ namespace GreenshotPlugin.UnmanagedHelpers { public extern static int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); [DllImport("user32", SetLastError=true, EntryPoint = "SendMessageA")] public static extern bool SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam); - // See: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633585%28v=vs.85%29.aspx - [DllImport("user32", EntryPoint="GetWindowLongPtr", SetLastError=true)] + [DllImport("user32", SetLastError = true)] + public extern static uint GetWindowLong(IntPtr hwnd, int index); + [DllImport("user32", SetLastError = true)] public extern static uint GetWindowLongPtr(IntPtr hwnd, int nIndex); - // See: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644898%28v=vs.85%29.aspx - [DllImport("user32", EntryPoint = "SetWindowLongPtr", SetLastError = true)] + [DllImport("user32", SetLastError = true)] + public static extern int SetWindowLong(IntPtr hWnd, int index, uint styleFlags); + [DllImport("user32", SetLastError = true)] public static extern int SetWindowLongPtr(IntPtr hWnd, int index, uint styleFlags); [DllImport("user32", SetLastError = true)] public static extern IntPtr MonitorFromWindow(IntPtr hwnd, uint dwFlags); @@ -221,6 +223,34 @@ namespace GreenshotPlugin.UnmanagedHelpers { [DllImport("user32", SetLastError = true)] public static extern IntPtr CreateIconIndirect(ref IconInfo icon); + /// + /// Wrapper for the GetWindowLong which decides if the system is 64-bit or not and calls the right one. + /// + /// + /// + /// + public static uint GetWindowLongWrapper(IntPtr hwnd, int nIndex) { + if (IntPtr.Size == 8) { + return GetWindowLongPtr(hwnd, nIndex); + } else { + return GetWindowLong(hwnd, nIndex); + } + } + + /// + /// Wrapper for the SetWindowLong which decides if the system is 64-bit or not and calls the right one. + /// + /// + /// + /// + public static void SetWindowLongWrapper(IntPtr hwnd, int nIndex, uint styleFlags) { + if (IntPtr.Size == 8) { + SetWindowLongPtr(hwnd, nIndex, styleFlags); + } else { + SetWindowLong(hwnd, nIndex, styleFlags); + } + } + public static uint GetGuiResourcesGDICount() { return GetGuiResources(Process.GetCurrentProcess().Handle, 0); }