【问题标题】:Receive a message when paste time using delphi使用delphi粘贴时间时收到消息
【发布时间】:2017-01-20 08:34:55
【问题描述】:

当用户将 txt,... 之类的内容粘贴到桌面或其他任何地方时,我如何才能收到消息,而不仅仅是在我的 delphi 应用程序中。 我需要从弹出菜单中粘贴消息并按 Ctrl+V。 类似于下面的代码:

if (Msg.Message = WM_PASTE) Then
 ShowMessage('Paste');

想象一个应用程序有两个按钮,其中一个主题[button1] 从剪贴板粘贴,另一个[button2] 从 memo1 [我在此备忘录中添加了一些文本] 粘贴一些文本到任何地方。 问题是当我将任何内容复制到剪贴板然后粘贴时,接下来如果我通过单击 button2 进行粘贴,我会错过我最后的剪贴板值。 我添加了另一个 memo2 [此备忘录是我的替代剪贴板],当通过单击第一个按钮进行粘贴时,我还将其粘贴到 memo2 中。在下一步中,我单击 button2 这必须将 memo1 值粘贴到我想要的任何地方,现在我还可以将 memo2 值复制到剪贴板,因为我将再次使用它。 如果我想像 button2 一样粘贴,我可以这样做,但如果我在桌面内粘贴,则需要检测粘贴时间。重要的是我必须使用复制粘贴而不是发送击键。

【问题讨论】:

  • 这很难做到。应用程序可以随意选择实施粘贴。有时会有WM_PASTE 消息,但很多时候没有。有时应用程序会直接处理键盘快捷键。有时它是从菜单、按钮、功能区调用的。这个请求的背后是什么。你为什么要这样做?也许有更好的方法。
  • 谢谢。这很难解释,但我需要做的只是直接从菜单检测键盘快捷键。
  • 为什么要这样做?因为你目前的想法不太可能实现。
  • 也许您需要监控剪贴板内容的变化?看看 SetClipboardViewer 等
  • 我认为您应该尝试解释您正在尝试做的事情,即使这很困难。例如,剪贴板旨在处理多种格式,可能另一种方法更好,它是您需要查看的副本而不是粘贴。

标签: delphi message paste


【解决方案1】:

尝试在谷歌上搜索 Windows 挂钩,例如(将服务挂钩到键盘)或(拦截键盘输入),您可以从那里开始。

看看这个,它也可能有用:

How to monitor the keyboard above all other applications and then send other keys to them instead

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多