【WPF】取色器-Color Extractor

server/2024/9/25 19:14:27/

【WPF】取色器

  • 实现
    • Hook
    • Screen Color
    • layout
    • .CS
  • 预览
  • 下载

取色器是一个非常实用的小工具,网上也很多可供下载使用。为什么已有却还是想要自己去实现一个呢?一方面是因为工具虽小但毕竟涉及到操作系统 API 的使用。另一方面想要在技术上精进一些。

实现

实现思路测试通过 Hook 鼠标左键单击,获取到鼠标位于屏幕坐标位置,再获取当前位置所渲染的颜色。

Hook

订阅鼠标左键点击事件,将鼠标坐标获取到当前程序。

using System.Runtime.InteropServices;
using System.Windows;namespace ColorExtractor
{public partial class GlobalMouseHook{private const int WH_MOUSE_LL = 14;private const int WM_LBUTTONDOWN = 0x0201;private const int WM_LBUTTONUP = 0x0202;public event EventHandler<Point> MouseReleased;private LowLevelMouseProc _proc;private IntPtr _hookID = IntPtr.Zero;public GlobalMouseHook(){_proc = HookCallback;}public void SetHook(){_hookID = SetWindowsHookEx(WH_MOUSE_LL, _proc, IntPtr.Zero, 0);}public void ReleaseHook(){UnhookWindowsHookEx(_hookID);}private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam){if (nCode >= 0){if (wParam == (IntPtr)WM_LBUTTONUP){MSLLHOOKSTRUCT hookStruct = Marshal.PtrToStructure<MSLLHOOKSTRUCT>(lParam);MouseReleased?.Invoke(this, new Point(hookStruct.pt.x, hookStruct.pt.y));}}return CallNextHookEx(_hookID, nCode, wParam, lParam);}private delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelMouseProc lpfn, IntPtr hMod, uint dwThreadId);[DllImport("user32.dll", CharSet = CharSet

http://www.ppmy.cn/server/5496.html

相关文章

数据的质量控制软件----fastQC

一、前言 FastQC的基本介绍: FastQC是一款基于Java的软件&#xff0c;它可以快速地对测序数据进行质量评估&#xff0c;其官网为&#xff1a;Babraham Bioinformatics - FastQC A Quality Control tool for High Throughput Sequence Data 高通量测序数据的高级质控工具输入…

详细理解React的Fiber结构

一、为什么会出现Fiber 旧版 React 通过递归的方式进行渲染&#xff0c;使用的是 JS引擎自身的函数调用栈&#xff0c;它会一直执行到栈空为止。而Fiber实现了自己的组件调用栈&#xff0c;它以链表的形式遍历组件树&#xff0c;可以灵活的暂停、继续和丢弃执行的任务。实现方式…

Set系列集合

Set系列集合特点&#xff1a; Set系列集合特点&#xff1a;无序&#xff1a;添加数据的顺序和获取出的数据顺序不一致&#xff1b;不重复&#xff1b;无索引HashSet无序&#xff1b;不重复&#xff1b;无索引LinkedHashSet有序&#xff1b;不重复&#xff1b;无索引TreeSet排序…

【架构】Elasticsearch+Logstash+Kibana架构

目录 什么是ELK ELK架构的应用场景 什么是ELK ELK是由Elasticsearch、Logstash和Kibana三个开源项目组成的技术栈&#xff0c;广泛用于搜索、日志管理和日志分析。这三个组件协同工作&#xff0c;提供了一个强大的方法来收集、存储、搜索和可视化日志数据和其他时间序列数据…

ADSP-21479的开发详解五(AD1939 C Block-Based Talkthru 48 or 96 kHz)音频直通

硬件准备 ADSP-21479EVB开发板&#xff1a; 产品链接&#xff1a;https://item.taobao.com/item.htm?id555500952801&spma1z10.5-c.w4002-5192690539.11.151441a3Z16RLU AD-HP530ICE仿真器&#xff1a; 产品链接&#xff1a;https://item.taobao.com/item.htm?id38007…

OpenHarmony多媒体-mp3agic

简介 mp3agic 用于读取 mp3 文件和读取/操作 ID3 标签&#xff08;ID3v1 和 ID3v2.2 到 ID3v2.4&#xff09;,协助开发者处理繁琐的文件操作相关&#xff0c;多用于操作文件场景的业务应用。 效果展示&#xff1a; 下载安装 ohpm install ohos/mp3agicOpenHarmony ohpm环境配…

【Golang】Gin教学-获取请求信息并返回

安装Gin初始化Gin处理所有HTTP请求获取请求的URL和Method获取请求参数根据Content-Type判断请求数据类型处理JSON数据处理表单数据处理文件返回JSON响应启动服务完整代码测试 Gin是一个用Go&#xff08;又称Golang&#xff09;编写的HTTP Web框架&#xff0c;它具有高性能和简洁…

Spring 声明式事务控制

1. 编程式事务控制相关对象 1.1 PlatformTransactionManager PlatformTransactionManager 接口是 spring 的事务管理器&#xff0c;它提供了我们常用的操作事务的方法。 PlatformTransactionManager 是接口类型&#xff0c;不同的 Dao 层技术则有不同的实现类。例如:Dao层技…