我想扩展一些现有应用程序的拖放行为,我想知道是否有任何方法可以通过监视应用程序的消息循环并注入我自己的消息来破解拖放支持或更改拖放行为。
它还可以监视何时执行粘贴操作,基本上是在控件仅支持粘贴文本并粘贴图像时创建自定义行为。
我认为Detours可能是我最好的选择,但一个问题是我必须为我想要扩展的每个应用程序编写自定义代码。如果 Windows 的设计考虑到可扩展性就好了!
另一方面,是否有任何操作系统支持这种性质的可扩展性?
好吧,从应用程序设计师的角度考虑这一点。如果您编写了一个应用程序,您是否希望用户能够将内容注入您的应用程序(更重要的是,您是否希望招致无知用户这样做然后责备您的支持/收入头痛)?每个应用程序的拖放基础设施都是专门为应用程序编写的,不允许您将任何想要的东西拖放到它上面(当您将某些东西拖到根本无法处理的应用程序上时,可能会导致崩溃和各种其他令人讨厌的行为) . 像这样的事情很难做到是有原因的。
可以这样做,但工作量很大:您需要获取要放置某些东西的窗口句柄,然后用您自己的替换该窗口的消息处理程序。当然,这充满了危险,因为您要么必须自己复制该窗口的所有现有功能,要么冒着应用程序无法正常工作的风险。
如果您愿意在加载应用程序时进行内存欺骗,您可能会搞砸。
但是,如果您正在寻找一种简单的方法来将您想要的代码注入到另一个窗口的消息泵中,那么您将找不到它。完成这样的事情所需的技能非常强大(除非有人将所有这些都包含在我不知道的应用程序/库中,但我对此表示怀疑)。这就像剪贴板挂钩,非常大:它不受欢迎,有很多陷阱,如果你真的不知道自己在做什么,你很可能会给你的系统带来很大的不稳定性。
嗯,实在是太糟糕了。我想有时候应用程序还不存在是有原因的。基本上我想要做的是通过挂钩将图像粘贴到文本上下文,在后台上传图片,以及将 url 粘贴到上传图片的位置,只需一个操作即可。
编辑:我想更简单的解决方案是创建一个新的键盘组合,在它进入任何其他应用程序之前被我的应用程序挂钩。我没有理由特别需要将它与复制/粘贴功能联系起来。