设为首页收藏本站

 找回密码
 立即注册
搜索
查看: 49|回复: 1

Windows右键【复制多行文件完整路径】

[复制链接]
累计签到:3 天
连续签到:1 天
灌水成绩
4
3
632
主题
帖子
积分

等级头衔 ID : 670
用户组 : 测量学徒

积分成就 测量币 : 632
在线时间 : 0 小时
注册时间 : 2026-4-6
最后登录 : 2026-5-4

勋章

测量学徒测量员

联系方式

发表于 2026-4-5 09:50:18 | 显示全部楼层 |阅读模式 IP:香港
尝试了多次,包括VBS、NirCMD、PowerShell都是失败告终:

  • Windows Registry Editor Version 5.00

  • [HKEY_CLASSES_ROOT\*\shell\copypath]
  • @="复制文件完整路径"
  • "Icon"="D:\\网络相关\\袖珍版IDM.exe,0"

  • [HKEY_CLASSES_ROOT\*\shell\copypath\command]@="\"d:\\CopyMultiPath.exe\" \"%1\""
末了一生气,干脆使用VS2022专门开发一下吧:
<ol>#define _CRT_SECURE_NO_WARNINGS // 1. 禁用安全警告
#include
#include
#include
#include
#include

// 使用 wchar_t 处理 Unicode,确保中文路径不乱码
void SetClipboardUnicode(const std::wstring& text) {
    if (!OpenClipboard(nullptr)) return;
    EmptyClipboard();
    size_t size = (text.size() + 1) * sizeof(wchar_t);
    HGLOBAL hGlob = GlobalAlloc(GMEM_MOVEABLE, size);
    if (hGlob) {
        memcpy(GlobalLock(hGlob), text.c_str(), size);
        GlobalUnlock(hGlob);
        SetClipboardData(CF_UNICODETEXT, hGlob);
    }
    CloseClipboard();
}

int wmain(int argc, wchar_t* argv[]) { // 使用 wmain 接收宽字符参数
    if (argc < 2) return 0;

    // 2. 获取临时文件路径
    wchar_t tempPath[MAX_PATH];
    GetTempPathW(MAX_PATH, tempPath);
    std::wstring tempFile = std::wstring(tempPath) + L"xcopy_paths.tmp";

    // 3. 追加路径到临时文件 (使用二进制模式并写入 UTF-16)
    std::wofstream ofs(tempFile, std::ios::app);
    ofs.imbue(std::locale("")); // 适配体系语言
    ofs
精密测量技术论坛免责声明
重要声明:以上内容仅代表该作者观点,不代表本站精密测量技术论坛立场。
如有涉及侵权请尽快告知,我们将会在第一时间处理。作者原创内容未经允许不得转载!
站长联系邮箱:1339305021@qq.com
站长联系微信:dddnnbbb
累计签到:5 天
连续签到:1 天
灌水成绩
2
61
370
主题
帖子
积分

等级头衔 ID : 845
用户组 : 测量员

积分成就 测量币 : 370
在线时间 : 0 小时
注册时间 : 2026-4-6
最后登录 : 2026-5-4

勋章

测量学徒测量员

联系方式

发表于 2026-4-5 09:55:49 | 显示全部楼层 IP:香港
最后发现上传时,找不到路径,一琢磨多了一个换行,所以最后有了一个修复版本。
支持单行路径 和 多行路径,这样就无烦恼了。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|精密测量技术论坛 ( 桂ICP备2026007449号-1 )|网站地图

GMT+8, 2026-5-4 06:10 , Processed in 0.132880 second(s), 32 queries .

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