屏幕截图的实现和源代码

2023-11-02

最近打算写一些入门相关的小应用程序开发实例,个人感觉学习程序开发,其关键的一步就是阅读源代码(RTFSC,呵呵),然后尝试自己动手编写。这里所谓的自己动手编写并不是让你照着源代码一句话一句的敲,也不是复制粘贴,而是阅读了源代码以后,学习其中的编程思想,然后加以应用,写出自己的程序,你可以在你阅读的源代码上增加功能或优化代码,或者就是在完全不看源代码的情况下,实现相同的功能。如果想学好程序开发,一定要强迫自己做到这样。

 


 

接下来是一个屏幕截图小工具的实例,当初做这个小工具是因为公司不能连接Internet,平时我都是用QQ截图,后来公司没有安装,于是自己编写了一个屏幕截图小工具,也是第一次正式用C++编写应用程序。

 

该程序的流程相当简单:

1.快捷键按下后启动截图功能,这里需要用全局键盘钩子来捕获键盘输入。

2.获取分辨率后,将屏幕截图(原始截图)拷贝到内存当中。

3.拷贝一份屏幕截图,并且转换为灰度图。

4.拷贝灰度图到显示设备当中。

5.获取鼠标选择区域,并绘制矩形框,将原图当中,鼠标框选部分截图拷贝到显示设备当中。

6.获取用户输入,如果是ESC,则重复步骤4,如果是双击或者Enter按下,则将框选部分的原图拷贝的剪贴板中,并释放资源,退出截图。

 

上面的流程便实现了屏幕截图的基础功能,启动截图后,屏幕变为灰色,鼠标选中部分为彩色,然后确定截图&

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

屏幕截图的实现和源代码 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 私有模板函数

    我有一堂课 C h class C private template
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • ENVI入门系列教程---二、图像分析---11.分类后处理

    every blog every motto Live beautifully dream passionately love completely https blog csdn net weixin 39190382 type blog
  • 嵌入式Linux移植0.嵌入式开发环境配置综述

    在开发板上进行Linux开发不同于Ubuntu 需要在PC上开发后编译 移进板子进行执行 因此会设计到各种开发工具 如NFS TFTP服务 QT环境配置 交叉编译器的配置等等 目前刚安装完QT开发环境并且测试通过 虽局限于飞凌的OK335x
  • P1853 守望者的逃离

    include
  • 计算机视觉与智能语音处理融合套件初体验(语音部分)

    本次实验我们使用的是EAIDK计算机视觉 语音处理套件试验箱进行实验 套件介绍 套件简介 EAIDK计算机视觉 语音实验箱以嵌入式人工智能开发套件EAIDK 610为核心 具备语音 视觉等传感器数据采集能力 及适用于多场景的运动控制接口 预
  • C语言---离散数学实验--命题逻辑及其应用(实验报告下载)

    目录 下载链接 设计一个5人表决开关电路 代码实现 确定谁是作案者 代码实现 下载链接 链接 https pan baidu com s 1nDnISBjZjbD6Bf4qqzICsw pwd 1234 提取码 1234 设计一个5人表决开
  • VUE前端实现token的无感刷新

    前言 说实话 这个其实没啥好讲的 要说有复杂度的话 也主要是在后端 实现token无感刷新对于前端来说是一项十分常用的技术 其本质都是为了优化用户体验 当token过期时不需要用户调回登录页重新登录 而是当token失效时 进行拦截 发送刷
  • Spring Boot 整合MyBatis 和 Spring Boot 整合MyBatis-Plus

    目录 Spring Boot 整合MyBatis 代码 配置实现 创建数据库和表 使用灵活的方式创建maven 创建resources application yml 配置数据源参数 并完成Spring Boot 项目启动测试 测试Drui
  • 5种获取JavaScript时间戳函数的方法

    来源 https www fly63 com 一 JavasCRIPT时间转时间戳 JavaScript获得时间戳的方法有五种 后四种都是通过实例化时间对象new Date 来进一步获取当前的时间戳 JavaScript处理时间主要使用时间
  • 排序算法整理

    冒泡排序 bubble sort public static void bubbleSort int array int n int i 0 loop int j 0 element index while i lt n for j 0 j
  • xshell的快捷键

    删除 ctrl d 删除光标所在位置上的字符相当于VIM里x或者dl ctrl h 删除光标所在位置前的字符相当于VIM里hx或者dh ctrl k 删除光标后面所有字符相当于VIM里d shift ctrl u 删除光标前面所有字符相当于
  • Linux网络管理-配置网卡

    目录 一 概念 二 配置网卡 2 1 命令行配置 2 1 1 查询网卡 2 1 2 配置网卡 2 2查询IP地址 2 3 查询DNS 三 配置两台机器通信 3 1 查看参数 3 2 进入配置环境 3 3 重启网卡 四 主机改名 五 重点 扩
  • ChatGPT写文书再次翻车,行文寡淡没有灵魂一眼假!

    留学申请文书是每个渴望出国深造的学子都会面临的一道门槛 近年来 随着人工智能ChatGPT的迅猛发展 文能写文章 武能改Bug AI代写留学文书逐渐成为一种趋势 不少人直呼申请文书有救了 然而 这种趋势是否真的有益呢 或许 我们应该对这种现
  • ‘sleep_for’ is not a member of ‘std::this_thread’ 报错是因为版本太低

    1 GCC编译器 从编译器GCC4 8 X的版本完全支持 1 目前C 11特性 之前成为C 0X特性 从GCC4 3的后续版本中逐步对C 11进行支持 2 从官方信息可以看到 目前从完全对C 11特性进行支持的是从编译器GCC4 8 X的版
  • 虚拟数字人和GPT-4的结合,能否迎来新爆发?

    最近 ChatGPT一直在互联网上狂飙 从 去年11月底推出到月活过亿 仅花了2个月的 时间 它既可以拥有美国的医学牌照 参加司法考试 又能写小说 编代码 查资料 还可 以陪你闲聊 你问它什么话题 它都能对答如流 有模有样 3月13日 Ch
  • python模块openpyxl常用指令

    1 加载xlsx文件 from openpyxl import load workbook wb load workbook xlsx file 2 获取加载xlsx文件有哪些sheets 1 遍历方法 for sheet in wb pr
  • 【软件教程】如何让vscode连接ssh时免密登录

    准备软件 客户机安装vscode vscode官网https code visualstudio com 客户机和服务器配置ssh 确保能够连接 VSCode ssh免密登录教程 一 在Client客户机生成ssh密钥对 打开客户机的cmd
  • bat获取所有的参数

    bat默认只能获取到1 9个参数 分别用 1 2 9引用 如果传给bat的参数大于9个 就必须用shift 工作需要 要写个bat脚本 获取所有的参数 再将所有的参数传给Java 代码如下 allparam就是获取到的所有参数字符串 ech
  • Window 窗口属性及嵌入窗口到D3D渲染窗口顶层

    Window窗口有很多属性 可以通过设定window的style和ex style中知道 这些属性有时候在实现某些效果的时候 是非常非常重要 以前都没有怎么详细了解 只是在用到对应的API时看一下 根本没有详细深入 这里想记录一下最近工作上
  • Python 创建Windows窗口(GUI)

    创建Windows窗口 GUI py 基本的四要素 import tkinter 导入tkinter模块 root tkinter Tk 创建Window窗口对象 root title 我的第一个GUI程序 窗口标题 root mainlo
  • 屏幕截图的实现和源代码

    最近打算写一些入门相关的小应用程序开发实例 个人感觉学习程序开发 其关键的一步就是阅读源代码 RTFSC 呵呵 然后尝试自己动手编写 这里所谓的自己动手编写并不是让你照着源代码一句话一句的敲 也不是复制粘贴 而是阅读了源代码以后 学习其中的