C# 桌面截屏 添加鼠标

 #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服务中获取到屏幕的截图,先这样,等研究出来再说
时间: 2024-10-13 22:29:14

C# 桌面截屏 添加鼠标的相关文章

Java邮件发送与屏幕截屏

前几天七夕情人节孤独寂寞的程序猿闲来没事,花了一两个小时写了个小Demo主要实现Java的Mail发送功能和桌面截屏功能. 首先让我们先看看Java sendMail邮件发送和桌面屏幕截屏功能是怎么实现的基础知识. 一.Java  SendMail邮件发送 首先让我们来看看邮件发送的原理图: JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook.foxmail功能类似) * JavaMail开发需要类库 javamail API

JAVA实现的截屏程序

http://hadeslee.iteye.com/blog/125386 http://www.jb51.net/article/75114.htm JAVA截屏程序(第三版) JavaEXTSwingCC++ 呵呵,昨天也看到朋友的留言,又增加了一些功能, 1,增加了一个把截到的图片复制到系统的剪帖板,这样一来就可以直接粘帖到word,photoshop,画图等程序里面了 2,增加了每截一张图片都会新开一个tab来放它,并且tab里面各自有各自的操作方法. 点击下载源文件和可执行JAR文件

【MFC】截图编辑插件技术总结(4):IE下网页整页截屏

现在大部分浏览器都已经实现了网页截图的功能,我要说的与这种情况稍有不同,浏览器是从内部获取,而因为我是ActiveX插件,需要从外部获取网页的document.但是,实现的思路基本一致,就是将Webbrowser放大到足够大,使滚动条不出现,然后调用IViewObject接口的Draw方法实现整页的截图.下面先给出代码实现,再对代码进行分析. 1 POINT pnt; 2 3 RECT rc; 4 5 HWND DeskHwnd = ::GetDesktopWindow(); //取得桌面句柄

Java开发的一个简单截屏工具

//源代码 import java.awt.*;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.*;import javax.swing.*;import java.io.*;import javax.imageio.*;imp

mac下截屏快捷键

在Mac OS中,有非常方便的截屏快捷键: Command-Shift-3: 对整个屏幕截屏,图片会保存的一个文件中(默认保存的桌面上) Command-Ctrl-Shift-3: 对整个屏幕截屏,图片被保存到剪贴板(夹纸板)中. Command-Shift-4: 对选定区域进行截屏,并将图片保存到文件中(默认保存的桌面上).在触发这个快捷键后,按空格(Space)键,可以对一整个窗口或菜单进行截屏. Command-Ctrl-Shift-4: 对选定区域进行截屏,图片被保存到剪贴板(夹纸板)中

ubuntu系统使用之6:截屏软件KSnapshot

KSnapshot是KDE集成桌面环境自带的截图工具,不过在GNOME集成桌面环境下也可以安装和使用它.可以使用apt-get命令来安装它.假设使用命令行方式来安装,打开一个GNOME终端窗口,在终端窗口中输入如下命令: 1) sudo apt-get install ksnapshot 命令执行后,将在线下载并安装KSnapshot.安装完毕后,在菜单"应用程序"→"图像"下找到"KSnapshot"项,即可使用这个功能强大的截屏软件了 2)K

python+tkinter+pyautogui 自制截屏软件

目标:虽然类似QQ等软件带有截屏功能,但还是感觉自造的好 使用说明:将以下代码保存为如:截屏.pyw    并发送到 桌面快捷方式  然后修改快捷方式的属性 增加快捷键. 现在可以用快捷键启动脚本截屏了. 然而:win10自带的  “Win+Shift+S”组合键便可进入截屏模式 代码: #! /usr/bin/env python # -*- coding: utf-8 -*- import tkinter as tk import pyautogui root = tk.Tk() root.

Cocos2d-x 3.2 Lua示例 CaptureScreen(截屏)

Cocos2d-x 3.2 Lua示例 CaptureScreen(截屏) 转载请注明:IT_xiao小巫 Cocos2d-x截屏功能是从3.2开始提供的,本篇博客就是介绍Cocos2d-x 3.2中Lua示例中的截屏功能.效果如下所示: 例子代码如下: --[[ 截屏测试 CaptureScreenTest ]]-- -- 获取屏幕大小 local winSize = cc.Director:getInstance():getWinSize() local kTagSprite = 1 loc

selenium webdriver 截屏操作

有时候我们需要进行截屏操作,特别是遇到一些比较重要的页面信息(出现错误)或者出现不同需要进行对比时, 我们就需要对正在处理的页面进行截屏! 未经作者允许,禁止转载! package test_wait20161205; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.o