1. 程式人生 > >C# 桌面截屏 添加鼠標

C# 桌面截屏 添加鼠標

位圖 創建 npos reg sha window new nbsp ons

 #region  第一種方法    
[DllImport("user32.dll")] static extern bool GetCursorInfo(out CURSORINFO pci); private const Int32 CURSOR_SHOWING = 0x00000001; [StructLayout(LayoutKind.Sequential)] struct POINT { public Int32 x; public Int32 y; } [StructLayout(LayoutKind.Sequential)] struct CURSORINFO { public Int32 cbSize; public Int32 flags; public IntPtr hCursor; public POINT ptScreenPos; }
public Image GetScreenImage()
{
Image myimage = new Bitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
Graphics g = Graphics.FromImage(myimage);
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height));

//先截屏後,然後找到鼠標的位置,後將鼠標畫上去
CURSORINFO pci;
pci.cbSize = Marshal.SizeOf(typeof(CURSORINFO));
GetCursorInfo(out pci);
System.Windows.Forms.Cursor cur = new System.Windows.Forms.Cursor(pci.hCursor);
cur.Draw(g, new Rectangle(pci.ptScreenPos.x - 10, pci.ptScreenPos.y - 10, cur.Size.Width, cur.Size.Height));
return myimage;
}

#endregion



#region 使用在顯存中獲取

IntPtr dc1 = CreateDC("DISPLAY", null, null, (IntPtr)null);
//創建顯示器的DC
Graphics g1 = Graphics.FromHdc(dc1);
//由一個指定設備的句柄創建一個新的Graphics對象
Bitmap MyImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, g1);
//根據屏幕大小創建一個與之相同大小的Bitmap對象
Graphics g2 = Graphics.FromImage(MyImage);
//獲得屏幕的句柄
IntPtr dc3 = g1.GetHdc();
//獲得位圖的句柄
IntPtr dc2 = g2.GetHdc();
//把當前屏幕捕獲到位圖對象中
BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc3, 0, 0, 13369376);


//CURSORINFO pci;
//pci.cbSize = Marshal.SizeOf(typeof(CURSORINFO));
//GetCursorInfo(out pci);
//System.Windows.Forms.Cursor cur = new System.Windows.Forms.Cursor(pci.hCursor);
//cur.Draw(g2, new Rectangle(pci.ptScreenPos.x - 10, pci.ptScreenPos.y - 10, cur.Size.Width, cur.Size.Height));

//把當前屏幕拷貝到位圖中
g1.ReleaseHdc(dc3);
//釋放屏幕句柄
g2.ReleaseHdc(dc2);
#endregion

不過做成windows服務中獲取到屏幕的截圖,先這樣,等研究出來再說

C# 桌面截屏 添加鼠標