鱼C论坛

 找回密码
 立即注册
查看: 508|回复: 1

Windows右键功能的原理

[复制链接]
发表于 2023-12-6 10:22:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近在做windows开发,想知道在鼠标右键单击文件能实现的复制文件路径、打开文件属性、复制等功能,底层是怎么实现的。
我想实现右键单击一个文件,就能读到这个文件的绝对路径(比如,右键点击一个文件,在命令行打印它的路径)但不知道该如何下手,有没有人可以不吝指点迷津,万分感谢!!求助求助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-6 10:23:38 | 显示全部楼层
Windows右键功能是通过Windows Shell实现的。Windows Shell是Windows操作系统提供的一组用于管理用户界面、文件操作和进程管理的API。

要实现右键单击文件能够读取文件的绝对路径,你可以使用Python的winreg模块来获取注册表中与文件关联的命令行。具体步骤如下:

1. 导入所需的模块

import winreg   import ctypes
2. 定义一个函数来获取文件的绝对路径,并在命令行中打印出来

def get_file_path():       # 获取文件路径       file_path = ctypes.windll.shell32.CommandLineToArgvW(ctypes.c_wchar_p(win32api.GetCommandLine())).value[1]       print(file_path)
3. 注册一个右键菜单项

def register_right_click_menu():       # 在注册表中创建一个新的键       key_path = r"Software\Classes\*\shell\PythonScript"       key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, key_path)          # 设置右键菜单显示的名称       winreg.SetValue(key, None, winreg.REG_SZ, "Get File Path")          # 在右键菜单项下创建一个子键,用于添加命令行       sub_key_path = r"Software\Classes\*\shell\PythonScript\command"       sub_key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, sub_key_path)          # 设置子键的默认值为我们定义的函数       winreg.SetValue(sub_key, None, winreg.REG_SZ, "pythonw.exe C:\\path\\to\\your\\script.py")
4. 调用函数

if __name__ == '__main__':       register_right_click_menu()
在这个例子中,我们在注册表中创建了一个新的键,并设置了右键菜单显示的名称为"Get File Path"。然后,在这个键下创建了一个子键,用于添加一个命令行,将会调用我们定义的函数来获取文件路径。

请注意替换示例代码中的"C:\\path\\to\\your\\script.py"为你的脚本路径。当你右键点击一个文件并选择"Get File Path"菜单项时,会调用你的脚本,并在命令行中打印出文件的绝对路径。

希望这个示例可以帮助到你,祝你在Windows开发中取得成功!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-21 22:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表