有没有办法覆盖 Windows 中现有应用程序的拖放或复制/粘贴行为?

Posted

技术标签:

【中文标题】有没有办法覆盖 Windows 中现有应用程序的拖放或复制/粘贴行为?【英文标题】:Is there any way to override the drag/drop or copy/paste behavior of an existing app in Windows? 【发布时间】:2008-08-28 19:00:40 【问题描述】:

我想扩展一些现有应用程序的拖放行为,我想知道是否有任何方法可以通过监控应用程序的消息循环并注入我的信息来破解拖放支持或更改拖放行为自己的消息。

它还可以监视何时执行粘贴操作,基本上是在控件仅支持粘贴文本并粘贴图像时创建自定义行为。

我认为Detours 可能是我最好的选择,但一个问题是我必须为我想要扩展的每个应用程序编写自定义代码。如果 Windows 在设计时考虑到可扩展性就好了!

另一方面,是否有任何操作系统支持这种性质的可扩展性?

【问题讨论】:

【参考方案1】:

如果您愿意在加载应用程序时进行内存中的欺骗,您可能会搞砸。

但是,如果您正在寻找一种简单的方法来将您想要的代码注入到另一个窗口的消息泵中,那么您将找不到它。完成这样的事情所需的技能非常强大(除非有人将所有这些都包含在我不知道的应用程序/库中,但我对此表示怀疑)。这就像剪贴板挂钩,写得很大:它不受欢迎,有很多陷阱,如果你不真的知道你在做什么,你很可能会给你的系统带来很大的不稳定性做。

【讨论】:

【参考方案2】:

好吧,从应用设计师的角度来考虑这一点。如果您编写了一个应用程序,您是否希望用户能够将内容注入您的应用程序(更重要的是,您是否希望招致无知用户这样做然后责备您的支持/收入头痛)?每个应用程序的拖放基础设施都是专门为应用程序编写的,不允许您将任何想要的东西拖放到它上面(当您将某些东西拖到根本无法处理的应用程序上时,可能会导致崩溃和各种其他令人讨厌的行为) .这样的事情很难做到。

可以做到的,但是需要做很多工作:你需要获取你想要放置东西的东西的窗口句柄,然后用你自己的替换那个窗口的消息处理程序.当然,这充满了危险,因为您要么必须自己复制该窗口的所有现有功能,要么冒着应用程序无法正常运行的风险。

【讨论】:

【参考方案3】:

嗯,那真是太糟糕了。我想有时候应用程序还不存在是有原因的。基本上,我要做的是通过将粘贴图像的过程挂钩到文本上下文、在后台上传图片以及将 url 粘贴到上传图片的位置。

编辑:我想更简单的解决方案是创建一个新的键盘组合,在它到达任何其他应用程序之前被我的应用程序挂钩。我没有理由特别需要将它与复制/粘贴功能联系起来。

【讨论】:

以上是关于有没有办法覆盖 Windows 中现有应用程序的拖放或复制/粘贴行为?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 node.js 同步调用 AWS Lambda?

重命名现有文件名

是否可以为DevPartner Studio Professional Edition的Windows服务进行覆盖?

有没有办法快速覆盖框架中的应用程序委托?

背水一战 Windows 10 (73) - 控件(控件基类): UIElement - 拖放的基本应用, 手动开启 UIElement 的拖放操作

Windows phone silverlight one 主题