ПРЕДПОСЫЛКИ
- Я пишу приложение для захвата экрана
- Мой код основан на этом проекте: http://www.codeproject.com/KB/cs/DesktopCaptureWithMouse.aspx?display=Print
- Обратите внимание, что код также захватывает курсор мыши (что желательно для меня)
МОЯ ПРОБЛЕМА
- Код отлично работает, когда курсор мыши является обычным указателем или значком руки - мышь правильно отображается на снимке экрана.
- Однако, когда курсор мыши изменяется на точку вставки (курсор "I-beam" ) - например, вводя в NOTEPAD - тогда код не работает - результатом является то, что я получаю слабое изображение курсора - как полупрозрачная (серая) версия, а не пустая и белая.
МОЙ ВОПРОС
- Как я могу захватить изображение курсора мыши, когда изображение является одним из этих изображений типа "I-beam".
- ПРИМЕЧАНИЕ. Если вы нажмете на оригинальную статью, кто-то предлагает предложение - он не работает.
ИСТОЧНИК
Это из оригинальной статьи.
static Bitmap CaptureCursor(ref int x, ref int y)
{
Bitmap bmp;
IntPtr hicon;
Win32Stuff.CURSORINFO ci = new Win32Stuff.CURSORINFO();
Win32Stuff.ICONINFO icInfo;
ci.cbSize = Marshal.SizeOf(ci);
if (Win32Stuff.GetCursorInfo(out ci))
{
if (ci.flags == Win32Stuff.CURSOR_SHOWING)
{
hicon = Win32Stuff.CopyIcon(ci.hCursor);
if (Win32Stuff.GetIconInfo(hicon, out icInfo))
{
x = ci.ptScreenPos.x - ((int)icInfo.xHotspot);
y = ci.ptScreenPos.y - ((int)icInfo.yHotspot);
Icon ic = Icon.FromHandle(hicon);
bmp = ic.ToBitmap();
return bmp;
}
}
}
return null;
}