public static Bitmap CaptureDesktopWithCursor()
{
int cursorX = 0;
int cursorY = 0;
Bitmap desktopBMP;
Bitmap cursorBMP;
Bitmap finalBMP;
Graphics g;
Rectangle r;
desktopBMP = CaptureDesktop();
cursorBMP = CaptureCursor(ref cursorX, ref cursorY);
if(desktopBMP != null)
{
if (cursorBMP != null)
{
r = new Rectangle(cursorX, cursorY,
cursorBMP.Width, cursorBMP.Height);
g = Graphics.FromImage(desktopBMP);
g.DrawImage(cursorBMP, r);
g.Flush();
return desktopBMP;
}
else
return desktopBMP;
}
return null;
}
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;
}
// ssWithMouseViewer is the PictureBox control
private void Display(Bitmap desktop)
{
Graphics g;
Rectangle r;
if(desktop != null)
{
r = new Rectangle(0,0,ssWithMouseViewer.Width,
ssWithMouseViewer.Height);
g = ssWithMouseViewer.CreateGraphics();
g.DrawImage(desktop,r);
g.Flush();
}
}
No comments:
Post a Comment