Fixed a potential issue with GetWindowLong, using a wrapper which decides upon the IntPtr size which call needs to be made.

Fixed the corner cut to work with a CreateRoundRectRgn, but made if it cuts configurable so people can turn it off.
Added a CountColor method to ImageHelper.cs, which should be used to check if PrintWindow functions properly.

git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2236 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
RKrom 2012-11-05 14:18:13 +00:00
commit 197d46c9b9
5 changed files with 71 additions and 68 deletions

View file

@ -353,7 +353,21 @@ namespace GreenshotPlugin.UnmanagedHelpers {
[DllImport("user32", SetLastError = true)]
public static extern int SetWindowLong(IntPtr hWnd, int index, uint styleFlags);
[DllImport("user32", EntryPoint="GetWindowLongPtr", SetLastError=true)]
public extern static IntPtr GetWindowLongPtr(IntPtr hwnd, int nIndex);
public extern static uint GetWindowLongPtr(IntPtr hwnd, int nIndex);
/// <summary>
/// Wrapper for the GetWindowLong which decides if the system is 64-bit or not and calls the right one.
/// </summary>
/// <param name="hwnd"></param>
/// <param name="nIndex"></param>
/// <returns></returns>
public static uint GetWindowLongWrapper(IntPtr hwnd, int nIndex) {
if (IntPtr.Size == 8) {
return GetWindowLongPtr(hwnd, nIndex);
} else {
return GetWindowLong(hwnd, nIndex);
}
}
[DllImport("user32", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowInfo(IntPtr hwnd, ref WindowInfo pwi);