有什么方法可以覆盖Windows中现有应用程序的拖放或者复制/粘贴行为?

时间:2020-03-05 18:44:36  来源:igfitidea点击:

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

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

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

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

解决方案

回答

好吧,从应用程序设计师的角度考虑这一点。如果我们编写了一个应用程序,我们是否希望用户能够将东西注入到应用程序中(更重要的是,我们是否会招致无知用户这样做的支持/收入难题,然后指责我们)?每个应用程序的拖放基础结构都是专门为该应用程序编写的,不允许我们将所需的任何内容拖放到该应用程序上(将某些内容拖动到根本无法处理的应用程序上,可能会导致崩溃和各种其他讨厌的行为) 。像这样的东西很难做到是有原因的。

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

回答

如果我们愿意在加载应用程序时进行内存中的挖空,则可以将其欺骗。

但是,如果我们正在寻找一种简单的方法来将所需的代码注入另一个窗口的消息泵中,则不会找到它。完成此类任务所需的技能非常强大(除非有人将所有这些都包装在我不知道的应用程序/库中,但我对此表示怀疑)。就像剪贴板挂钩,写大写一样:它皱着眉头,有很多陷阱,如果我们真的不知道自己在做什么,极有可能在系统中引入严重的不稳定性。

回答

嗯,那真的太糟糕了。我想有时候有某些原因导致应用程序不存在。基本上,我要尝试的工作是简化将图片链接发送给使用各种应用程序(主要是Web浏览器文本表单,但也可以在终端窗口中进行编辑的任何时间)的人们的过程,方法是将图片粘贴到文本上下文,在后台上传图片,然后通过一个动作将网址粘贴到上传图片的所有位置。

编辑:我想对此的更简单的解决方案是只创建一个新的键盘组合,该组合在我的应用程序挂接到任何其他应用程序之前就已经钩住了。我没有特别需要将其绑定到复制/粘贴功能的理由。