• 剪贴板的小助手


    介绍 当我需要多次复制/粘贴几个短语/单词时,我发现自己丢失了这个小实用程序。它扫描Windows剪贴板中的新项目,并将它们放入列表中,当用户按下Ctrl+Shift+V时,它将显示一个带有这些项目列表的窗口。棘手的事情是,它监听在任何窗口中被按下的键。用户单击要使用的项后,它将粘贴到文本框或写入区域中的活动表单中。 最重要的事情是,当你想粘贴一些文本你以前放在剪贴板,所有你需要做的就是选择目标文本框在任何窗口(我发现的一个例外是在Flash动画文本框),文本编辑器,浏览器等。按Ctrl + shift + V,并单击所需的物品;释放鼠标左键后,选中的文本就会粘贴-只需要三步!! 使用的代码 剪贴板 剪贴板由ClipboardListener类维护,它有两个公共函数: GetClipboardTextSetClipboardText 我从访问剪贴板的。net函数开始,但在这些函数的使用出现了一些问题之后,我看了一下Windows API,并成功地使用了它们。这些函数是: OpenClipboardEmptyClipboardGetClipboardDataSetClipboardDataCloseClipboard 我使用了Windows API中的其他几个函数—主要用于内存访问,但这里不打算提及它们。 处理键盘 检查键组合是通过使用键盘挂钩来完成的。键盘类侦听按下/释放的键,当按下某些组合时,它触发。键盘挂钩在这个网站的几篇文章中有详细的描述(我已经读过了:-)),所以请使用搜索功能获得更多信息。只需寻找Windows API函数: SetWindowsHookExUnhookWindowsHookExCallNextHookEx 粘贴的内容 要将某些文本粘贴到所需的位置,程序会模拟键盘操作——它使用ClipboardListener类将文本复制到剪贴板中,然后使用Windows API函数keybd_event按下Ctrl+V: 隐藏,复制Code

    //press Ctrl
    keybd_event(VK_CONTROL, 0, 0, 0);
    //press V
    keybd_event((byte)VkKeyScan((byte)'v'), 0, 0, 0);
    //release Ctrl
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    //release V
    keybd_event((byte)VkKeyScan((byte)'v'), 0, KEYEVENTF_KEYUP, 0);

    keybd_event向活动窗口发送消息。但是我们应该发送到哪个窗口呢?我们需要一个句柄。我们所知道的是,目标窗口在显示列表窗口之前位于顶部。对于这个任务,我使用了几个其他的Windows API函数: EnumWindowsGetWindowModuleFileNameIsWindowVisible EnumWindows使用窗口的句柄填充列表,但按一定的顺序—从最顶层窗口到最底层窗口。我所要做的就是拒绝隐藏窗口并从列表中返回第二个窗口(第一个窗口是带有列表的窗口)。 在获得句柄之后,我为该窗口设置焦点,光标被移到之前的位置,窗口接收“Ctrl+V”的消息——文本被粘贴到相应的位置。为了设置焦点,我使用了Windows API函数: SetForegroundWindowSetFocus 最后将 这是我的第一篇文章,所以请善良:-) 历史 2007.11.05 -也可以用鼠标左键点击列表来激活窗口;将最近的项目放在列表的顶部。 本文转载于:http://www.diyabc.com/frontweb/news265.html

  • 相关阅读:
    P1199三国游戏(博弈论)
    平方求和
    完全立方公式
    P1414 又是毕业季(数论)
    P1514 引水入城(搜索+线段完全覆盖)
    树莓派利用Django搭建聊天网页服务器 —— 准备篇
    树莓派下安装Django环境
    Linux终端光标消失问题
    OpenCV 简介
    树莓派是什么?能干什么?和单片机有什么区别?
  • 原文地址:https://www.cnblogs.com/Dincat/p/13437310.html
Copyright © 2020-2023  润新知