文件拖动到 Python 脚本上执行

将文件拖拽到.py文件上以处理它(从DropHandler说起)

windows默认情况下,拖动文件到一个python脚本上面,会把这个python脚本挤走,而不会执行python脚本。因为windows认为python脚本不是一个合法的可拖放的目的对象(drop target)

观察能够在win10下支持拖拽效果的的两类文件.vbs和bat

它们都有一个DropHandler项目:

  • 计算机\HKEY_CLASSES_ROOT\batfile\shellex\DropHandler
  • 计算机\HKEY_CLASSES_ROOT\VBSFile\ShellEx\DropHandler

其对应的值分别为

  • {86C86720-42A0-1069-A2E8-08002B30309D}
  • {60254CA5-953B-11CF-8C96-00AA00B8708C}

观察其效果:

  • bat 对应的拖拽效果为 打开 ,其传递给程序的文件路径为8.3格式的缩略路径
  • vbs 对应的拖拽效果为 复制 ,其传递给程序的文件路径为全路径

所以,可以通过 {60254CA5-953B-11CF-8C96-00AA00B8708C}{86C86720-42A0-1069-A2E8-08002B30309D} 两个 DropHandler 项目来控制某种扩展名上的拖拽效果

于是可以使用新建下述文件 Python.reg 导入:

Windows Registry Editor Version 5.00  

[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]  
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

刷新图标覆盖(注销或重启电脑)后 .py 文件即可获得拖拽效果

此外,会使用哪个解释器运行,由 计算机\HKEY_CLASSES_ROOT\Python.File\Shell\open\command 的值决定,例如要使用 pyhton3.8,就是:

"D:\Users\Haujet\AppData\Local\Programs\Python\Python38\python.exe" "%1" %*

其中的解释器路径要填绝对路径。

虽然我运行 python 命令是默认 3.8,但当注册表那里填写的解释器路径是 python 时,它就不会使用 python3.8,很奇怪。

posted @   淳帅二代  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示