吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6950|回复: 92
收起左侧

[原创工具] WIN7和WIN10也有右键复制路径

  [复制链接]
tonyfeng 发表于 2023-6-1 19:10
本帖最后由 tonyfeng 于 2023-6-2 08:39 编辑

可以支持文件,把路径变成反斜杠,用于粘贴在别地方去,如代码中,
222.png
右键复制路径.zip (6.41 KB, 下载次数: 70) #pragma once
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
#define _AFXDLL
#include <iostream>
#include <afxwin.h>         // MFC 核心组件和标准组件

void CopyToClipboard(HWND hWndOwner, LPCTSTR strText)
{
        hWndOwner = NULL;
        if (!OpenClipboard(hWndOwner))
        {
                return;
        }
        EmptyClipboard();
        size_t cbStr = (_tcslen(strText) + 1) * sizeof(TCHAR);
        HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
        memcpy_s(GlobalLock(hData), cbStr, strText, cbStr);
        GlobalUnlock(hData);
        // For the appropriate data formats...
        UINT uiFormat = (sizeof(TCHAR) == sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;
        if (::SetClipboardData(uiFormat, hData) == NULL)
        {
                DWORD dwErro = GetLastError();
        }
        CloseClipboard();
        GlobalFree(hData);
}

//单字节转宽字节
wchar_t* AnsiToUnicode(const char* szStr)
{
        int nLen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0);
        if (nLen == 0)
        {
                return NULL;
        }
        wchar_t* pResult = new wchar_t[nLen];
        MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen);
        return pResult;
}

bool tianjiareg()
{
        TCHAR path[MAX_PATH] = { 0 };
        GetModuleFileName(NULL, path, MAX_PATH);

        CString str;
        CString str1 = TEXT(" \"%1\"");
        str.Format(L"\"%s\"", path);
        str = str + str1;

        HKEY hKey = nullptr;
        if (ERROR_SUCCESS != RegCreateKey(HKEY_CLASSES_ROOT, TEXT("Folder\\shell\\复制路径\\command\\"), &hKey))
        {
                return TRUE;
        }
        if (ERROR_SUCCESS != RegSetValue(hKey, nullptr, REG_SZ, str, 4))
        {
                return TRUE;
        }
        if (hKey == nullptr)
        {
                return TRUE;
        }
        RegCloseKey(hKey);
        return TRUE;
}

bool tianjifileareg()
{
        TCHAR path[MAX_PATH] = { 0 };
        GetModuleFileName(NULL, path, MAX_PATH);

        CString str;
        CString str1 = TEXT(" \"%1\"");
        str.Format(L"\"%s\"", path);
        str = str + str1;

        HKEY hKey = nullptr;
        if (ERROR_SUCCESS != RegCreateKey(HKEY_CLASSES_ROOT, TEXT("*\\shell\\复制路径\\command\\"), &hKey))
        {
                return TRUE;
        }
        if (ERROR_SUCCESS != RegSetValue(hKey, nullptr, REG_SZ, str, 4))
        {
                return TRUE;
        }
        if (hKey == nullptr)
        {
                return TRUE;
        }
        RegCloseKey(hKey);
        return TRUE;
}

int main(int argc, char* argv[])
{
        tianjiareg();
        tianjifileareg();
        if (argc == 2)
        {
                CString path = AnsiToUnicode(argv[1]);
                int str_len = path.GetLength();
                if (str_len > 0)
                {
                        path.Replace('\\', '/');
                        CopyToClipboard(NULL, path);
                }
        }
}

右键复制路径.zip (6.41 KB, 下载次数: 198)



免费评分

参与人数 6吾爱币 +12 热心值 +5 收起 理由
mesir + 1 + 1 我很赞同!
applefans007 + 1 + 1 我很赞同!
抱薪风雪雾 + 1 + 1 谢谢@Thanks!
adamfh + 1 + 1 用心讨论,共获提升!
cklee + 1 我很赞同!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

回忆如刀 发表于 2023-6-1 20:40
按shift直接右键复制地址

免费评分

参与人数 24吾爱币 +24 热心值 +21 收起 理由
fdsa16888 + 1 + 1 我很赞同!
我系小白啊 + 1 + 1 我很赞同!
Google才知道 + 1 我很赞同!
xyt9812 + 1 我很赞同!
moreeli + 1 + 1 热心回复!
未痕月空 + 1 + 1 牛呀牛呀
Recollects + 1 + 1 谢谢@Thanks!
exiled + 1 + 1 谢谢@Thanks!
nide312 + 1 + 1 用心讨论,共获提升!
S.K + 1 + 1 谢谢@Thanks!
knx888 + 1 + 1 我很赞同!
longcy + 1 牛啊 我也是刚知道
cnvip666 + 1 + 1 热心回复!
gzzx1234 + 1 + 1 我很赞同!
抱薪风雪雾 + 1 + 1 谢谢@Thanks!
Natu + 1 + 1 牛啊,我尽然不知道还有这一招。
tsyhome + 1 + 1 我很赞同!
摇裤儿 + 1 + 1 又学到一招!
Mainos + 2 + 1 我很赞同!
i7hone + 1 + 1 我很赞同!
N|KO + 1 + 1 我很赞同!
kingtiger + 1 + 1 学一招!
bydlyzx + 1 + 1 谢谢@Thanks!好方便啊
BLUE7777777 + 1 我很赞同!

查看全部评分

yfd11 发表于 2023-6-7 15:32
本帖最后由 yfd11 于 2023-6-7 16:03 编辑

;我用的注册表也可以哦,以下内容保存成reg文件双击导入即可Windows Registry Editor Version 5.00
;文件
[HKEY_CLASSES_ROOT\*\shell\copypath]
@="复制文件路径"
[HKEY_CLASSES_ROOT\*\shell\copypath\command]
@="mshta vbscript:clipboarddata.setdata(\"text\",\"%1\")(close)"

;文件夹
[HKEY_CLASSES_ROOT\Directory\shell\copypath]
@="复制文件夹路径"
[HKEY_CLASSES_ROOT\Directory\shell\copypath\command]
@="mshta vbscript:clipboarddata.setdata(\"text\",\"%1\")(close)"

在右键菜单中添加复制文件路径.zip

516 Bytes, 下载次数: 41, 下载积分: 吾爱币 -2 CB

 楼主| tonyfeng 发表于 2023-6-2 08:30
回忆如刀 发表于 2023-6-1 20:40
按shift直接右键复制地址

复制的路径 不能用在写C代码上面哦,这个支持单个文件路径
 楼主| tonyfeng 发表于 2023-6-2 08:28
QQ1476 发表于 2023-6-1 21:22
系统本来也能复制路径呀,麻烦问问这个和资源管理器里的复制文件路径有什么区别?

复制的不能用在写代码上面哦,这个支持文件路径
xwawa 发表于 2023-6-1 20:05
本帖最后由 xwawa 于 2023-6-1 20:06 编辑

谢谢分享,打开文件所在位置复制也简单。
xHack 发表于 2023-6-1 20:06
支持一下,这样子会更方便复制路径
finch925 发表于 2023-6-1 20:22
很实用的小工具
WuYule 发表于 2023-6-1 20:31
自带的文件资源管理器里也能复制为路径。
lanpeng 发表于 2023-6-1 20:59
win11使用没有感觉到效果,能不能再升级一下按shaift加左键直接复制,要是遇到需要大量复制文件路径这个还是很可以

boxer 发表于 2023-6-1 21:06
win7以上, 按住shift右键就会有一个"复制为路径"的菜单条目, 默认会加引号
这类小功能用ahk真的是无敌,非常简单方便
[Asm] 纯文本查看 复制代码
!c::
clipboard := ""
sendInput, ^c
ClipWait, 1, 1
if errorLevel
	return
clipboard = %clipboard%
return

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
waltzofjack + 2 + 1

查看全部评分

QQ1476 发表于 2023-6-1 21:22
系统本来也能复制路径呀,麻烦问问这个和资源管理器里的复制文件路径有什么区别?
qq3501427 发表于 2023-6-1 21:25
不知道是不是StartAllback的缘故,右键直接就有复制路径,没看到这个都没有发现
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-24 03:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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