C# 获取鼠标选中的文字(屏幕取词)

本文介绍了如何在C#中实现屏幕取词功能,即获取鼠标选中的文本。作者分享了尝试使用金山提供的DLL失败的经历,转而采用Windows API方式实现。通过设置鼠标钩子监听鼠标操作,模拟发送Ctrl+C复制命令,然后从剪贴板获取选中内容。文中还提到了微软热键发送类在某些情况下的不稳定性,并提供了代码示例。
摘要由CSDN通过智能技术生成

本来想做鼠标选中翻译小软件,但发现鼠标选取文字获取并不是很容易,经过不断努力,最终实现。

先看展示

在这里插入图片描述

下面给大家说下过程,经历。

网上大部分说的都是使用金山提供的那个dll去进行实现,但是我尝试了一下,代码可以跑起来, 但好像没有成功。而且也不知道他Dll内部原理,就放弃了。

另外分享一下金山遇到的问题

在引入金山dll的时候,运行程序后 报错 80040154 没有注册

解决方案:
在这里插入图片描述
运行一下指令:regsvr32 D:\测试\Translate\Translate\bin\Debug\netcoreapp3.1\XdictGrb.dll其中 D:\测试\Translate\Translate\bin\Debug\netcoreapp3.1\XdictGrb.dll是你dll的路径。

运行后它会提示你注册成功。如果运行后还是报同样的错。
就改下项目工程属性中的目标平台。改为x86
在这里插入图片描述

我的实现过程是使用windows API的方式。

步骤。

  1. 先通过API 使我们的应用可以全局监视鼠标操作。
  2. 当鼠标选中文字后,通过API发送热键命令 ctrl+c(复制的命令)把内容复制到粘贴板
  3. 从粘贴板中读取出选中的内容。

以上是我实现的步骤。

废话不多说。直接上代码。首先定义一个鼠标钩子类。MouseHook

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace Translate
{
   
    /// <summary>
    /// 监控鼠标钩子
    /// </summary>
    public class MouseHook
    {
   
        private const int WM_MOUSEMOVE = 0x200;
        private const int WM_LBUTTONDOWN = 0x201;
        private const int WM_RBUTTONDOWN = 0x204;
        private const int WM_MBUTTONDOWN = 0x207;
        private const int WM_LBUTTONUP = 0x202;
        private const int WM_RBUTTONUP = 0x205;
        private const int WM_MBUTTONUP = 0x208;
        private const int WM_LBUTTONDBLCLK = 0x203;
        private const int WM_RBUTTONDBLCLK = 0x206;
        private const int WM_MBUTTONDBLCLK = 0x209;

        //全局的事件    
        public event MouseEventHandler OnMouseActivity;
  
        static int hMouseHook = 0; //鼠标钩子句柄    

        //鼠标常量    
        public const int WH_MOUSE_LL = 14; //mouse hook constant    

        HookProc MouseHookProcedure; //声明鼠标钩子事件类型.    

        //声明一个Point的封送类型    
        [StructLayout(LayoutKind.Sequential)]
        public class POINT
        {
   
            public int x;
            public int y;
        }

        //声明鼠标钩子的封送结构类型    
        [<
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值