一个方便的打开dos窗体的组件

彻底卸载Edge浏览器并阻止其重新安装的方法 通过本文介绍的步骤,你可以彻底卸载Edge浏览器并阻止其重新安装,从而更好地管理电脑中的软件和资源。希望这些方法对你有所帮助,让你能够更自由地定制和使用你的电脑系统。如果你有任何疑问或建议,欢迎在评论区留言,我们将竭诚为你解答和改进。 阅读详情

  作为开发人员总是要时不时使用命令行,为此用Win+R热键输入cmd的方式,然后在dos窗体通过
CD命令一步步转到命令所在目录,这系列操作多了就有点繁琐了,有没有简单的方式呢?

         网上搜了一把,有在注册表加入几项即可的办法,方法如下:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/Directory/shell/cmd]
@="进入DOS"
[HKEY_CLASSES_ROOT/Directory/shell/cmd/command]
@="cmd.exe /k /"cd %L/""
[HKEY_CLASSES_ROOT/Drive/shell/cmd]
@="进入DOS"
[HKEY_CLASSES_ROOT/Drive/shell/cmd/command]
@="cmd.exe /k /"cd %L/""

把以上保存为reg文件,然后导入注册表中即可,刚开始用的挺欢快,省了很多事,但是用了一段时间后,还是不够爽,为何?

原来这个咚咚不能在我所浏览的当前目录的视图背景上让我进入dos,非要在目录上右键菜单才可以。

想了想看来图方便还不能图省事,只能写个简单的COM插件了,下面为插件执行效果,这下方便了。哈

 

这里好像不能上传代码,只好列出来了,主要代码如下:

atl工程

 

// OpenDos.h : Declaration of the COpenDos

#ifndef __OPENDOS_H_
#define __OPENDOS_H_

#include 
"resource.h"       // main symbols

/////////////////////////////////////////////////////////////////////////////
// COpenDos
class ATL_NO_VTABLE COpenDos : 
    
public CComObjectRootEx<CComSingleThreadModel>,
    
public CComCoClass<COpenDos, &CLSID_OpenDos>,
    
public IOpenDos,
    
public IShellExtInit,
    
public IContextMenu
{
public:
    COpenDos()
    
{
    }


DECLARE_REGISTRY_RESOURCEID(IDR_OPENDOS)
DECLARE_NOT_AGGREGATABLE(COpenDos)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(COpenDos)
    COM_INTERFACE_ENTRY(IOpenDos)
    COM_INTERFACE_ENTRY(IShellExtInit)
    COM_INTERFACE_ENTRY(IContextMenu)
END_COM_MAP()

// IOpenDos
public:
    
// IShellExtInit
    STDMETHODIMP Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
    
    
// IContextMenu
    STDMETHODIMP GetCommandString(UINT, UINT, UINT*, LPSTR, UINT);
    STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO);
    STDMETHODIMP QueryContextMenu(HMENU, UINT, UINT, UINT, UINT);
protected:
    TCHAR m_szFile [MAX_PATH];
}
;

#endif //__OPENDOS_H_





//////////////////////
// OpenDos.cpp : Implementation of COpenDos
#include "stdafx.h"
#include 
"DosHere.h"
#include 
"OpenDos.h"

/////////////////////////////////////////////////////////////////////////////
// COpenDos


/////////////////////////////////////////////////////////////////////////////
// COpenDos

STDMETHODIMP COpenDos::Initialize (
    LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hProgID )
{
    FORMATETC fmt 
= { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
    STGMEDIUM stg 
= { TYMED_HGLOBAL };
    HDROP     hDrop;

    
if( !pDataObj )
    
{
        
if( pidlFolder )
        
{
            TCHAR tcPath[ MAX_PATH ];
            
if( !SHGetPathFromIDList( pidlFolder , tcPath ))
            
{
                
return E_INVALIDARG;
            }

            
else
            
{
                lstrcpy(m_szFile, tcPath);
                
return S_OK;
            }

        }

        
else
        
{
            
return E_INVALIDARG;
        }

    }


    
// Look for CF_HDROP data in the data object.
    if ( FAILED( pDataObj->GetData ( &fmt, &stg ) ))
        
{
        
// Nope! Return an "invalid argument" error back to Explorer.
        return E_INVALIDARG;
        }


    
// Get a pointer to the actual data.
    hDrop = (HDROP) GlobalLock ( stg.hGlobal );

    
// Make sure it worked.
    if ( NULL == hDrop )
        
return E_INVALIDARG;

    
// Sanity check - make sure there is at least one filename.
    UINT uNumFiles = DragQueryFile ( hDrop, 0xFFFFFFFF, NULL, 0 );
    HRESULT hr 
= S_OK;

    
if ( 0 == uNumFiles )
        
{
        GlobalUnlock ( stg.hGlobal );
        ReleaseStgMedium ( 
&stg );
        
return E_INVALIDARG;
        }


    
// Get the name of the first file and store it in our member variable m_szFile.
    if ( 0 == DragQueryFile ( hDrop, 0, m_szFile, MAX_PATH ) )
        hr 
= E_INVALIDARG;

    GlobalUnlock ( stg.hGlobal );
    ReleaseStgMedium ( 
&stg );

    
return hr;
}


STDMETHODIMP COpenDos::QueryContextMenu (
    HMENU hmenu, UINT uMenuIndex, UINT uidFirstCmd,
    UINT uidLastCmd, UINT uFlags )
{
    
// If the flags include CMF_DEFAULTONLY then we shouldn't do anything.
    if ( uFlags & CMF_DEFAULTONLY )
        
return MAKE_HRESULT ( SEVERITY_SUCCESS, FACILITY_NULL, 0 );

    InsertMenu ( hmenu, uMenuIndex, MF_BYPOSITION, uidFirstCmd, _T(
"Open &Dos Here") );

    
return MAKE_HRESULT ( SEVERITY_SUCCESS, FACILITY_NULL, 1 );
}


STDMETHODIMP COpenDos::GetCommandString (
    UINT idCmd, UINT uFlags, UINT
* pwReserved, LPSTR pszName, UINT cchMax )
{
USES_CONVERSION;

    
// Check idCmd, it must be 0 since we have only one menu item.
    if ( 0 != idCmd )
        
return E_INVALIDARG;

    
// If Explorer is asking for a help string, copy our string into the
    
// supplied buffer.
    if ( uFlags & GCS_HELPTEXT )
        
{
        LPCTSTR szText 
= _T("Open dos console here.");

        
if ( uFlags & GCS_UNICODE )
            
{
            
// We need to cast pszName to a Unicode string, and then use the
            
// Unicode string copy API.
            lstrcpynW ( (LPWSTR) pszName, T2CW(szText), cchMax );
            }

        
else
            
{
            
// Use the ANSI string copy API to return the help string.
            lstrcpynA ( pszName, T2CA(szText), cchMax );
            }


        
return S_OK;
        }


    
return E_INVALIDARG;
}


STDMETHODIMP COpenDos::InvokeCommand ( LPCMINVOKECOMMANDINFO pCmdInfo )
{
    
// If lpVerb really points to a string, ignore this function call and bail out.
    if ( 0 != HIWORD( pCmdInfo->lpVerb ) )
        
return E_INVALIDARG;

    
// Get the command index - the only valid one is 0.
    switch ( LOWORD( pCmdInfo->lpVerb) )
        
{
        
case 0:
            
{
            TCHAR szMsg [MAX_PATH 
+ 32];
            
            wsprintf ( szMsg, _T(
"cmd.exe /k "%c: && cd %s""), m_szFile[0],m_szFile );

            
//MessageBox ( pCmdInfo->hwnd, szMsg, _T("SimpleShlExt"),
            
//             MB_ICONINFORMATION );
            
            WinExec(szMsg,SW_SHOW);

            
return S_OK;
            }

        
break;

        
default:
            
return E_INVALIDARG;
        
break;
        }

}



////////////////////////////////////////////////////////////////////////////////
// DosHere.cpp : Implementation of DLL Exports.


// Note: Proxy/Stub Information
//      To build a separate proxy/stub DLL, 
//      run nmake -f DosHereps.mk in the project directory.

#include 
"stdafx.h"
#include 
"resource.h"
#include 
<initguid.h>
#include 
"DosHere.h"

#include 
"DosHere_i.c"
#include 
"OpenDos.h"


CComModule _Module;

BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_OpenDos, COpenDos)
END_OBJECT_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLL Entry Point

extern "C"
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID 
/*lpReserved*/)
{
    
if (dwReason == DLL_PROCESS_ATTACH)
    
{
        _Module.Init(ObjectMap, hInstance, 
&LIBID_DOSHERELib);
        DisableThreadLibraryCalls(hInstance);
    }

    
else if (dwReason == DLL_PROCESS_DETACH)
        _Module.Term();
    
return TRUE;    // ok
}


/////////////////////////////////////////////////////////////////////////////
// Used to determine whether the DLL can be unloaded by OLE

STDAPI DllCanUnloadNow(
void)
{
    
return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
}


/////////////////////////////////////////////////////////////////////////////
// Returns a class factory to create an object of the requested type

STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID
* ppv)
{
    
return _Module.GetClassObject(rclsid, riid, ppv);
}

/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry

STDAPI DllRegisterServer(
void)
{
    
// registers object, typelib and all interfaces in typelib
    return _Module.RegisterServer(FALSE););//注意改为FALSE了

}


/////////////////////////////////////////////////////////////////////////////
// DllUnregisterServer - Removes entries from the system registry

STDAPI DllUnregisterServer(
void)
{
    
return _Module.UnregisterServer(FALSE);//注意改为FALSE了
}





rgs文件内容:
HKCR
{
    NoRemove CLSID
    
{
        ForceRemove 
{F617AA3A-D9A7-4B09-AF59-6E036732FCD8} = s 'InterFaceCls Class'
        
{
            InprocServer32 
= s '%MODULE%'
            
{
                val ThreadingModel 
= s 'Apartment'
            }

        }

    }


  NoRemove Directory
  
{
    NoRemove shellex
    
{
      NoRemove ContextMenuHandlers
      
{
        ForceRemove OpenDosHere 
= s '{F617AA3A-D9A7-4B09-AF59-6E036732FCD8}'
      }

    }

  }


  NoRemove Folder
  
{
    NoRemove shellex
    
{
      NoRemove ContextMenuHandlers
      
{
        ForceRemove OpenDosHere 
= s '{F617AA3A-D9A7-4B09-AF59-6E036732FCD8}'
      }

    }

  }



  NoRemove Drive
  
{
    NoRemove shellex
    
{
      NoRemove ContextMenuHandlers
      
{
        ForceRemove OpenDosHere 
= s '{F617AA3A-D9A7-4B09-AF59-6E036732FCD8}'
      }

    }

  }


  NoRemove Directory
  
{
    NoRemove Background
    
{
        NoRemove shellex
        
{
          NoRemove ContextMenuHandlers
          
{
            ForceRemove OpenDosHere 
= s '{F617AA3A-D9A7-4B09-AF59-6E036732FCD8}'
          }

        }

    }

  }


}

doshere文件夹快速开启命令行 快速开启命令行窗口,使用方法是:双击安装,右键单击文件夹,选择doshere,弹出命令行窗口,默认为单击文件目录 立即下载

相关推荐

Dos Here

NULL 博文链接:https://egox.iteye.com/blog/1154234

"DOS Here" 两种自制方式

第一种 写入注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\cmd] @="DOS Here" [HKEY_CLASSES_ROOT\Directory\shell\cmd\command] @="cmd.exe /k \"cd %L\"" 第二种 inf文件安装 ; ...

onlysoymilk的专栏 410

节卡Jaka Zu APP编程避坑指南:从频繁通讯错误到稳定Socket交互的调试心得

本文详细解析了节卡Jaka Zu APP编程中常见的通讯错误问题,并提供了从基础排查到高级调试的完整解决方案。通过优化网络配置、固件匹配、心跳机制和数据交互规范,开发者可实现稳定的Socket通讯,有效提升工业机器人操控的可靠性。文章特别针对v1.6.7.3版本的典型问题给出了实用调试技巧。

weixin_42639633的博客 319

在任意Windows目录下进入Dos的方法

在开发J2EE Application时,常常会在Dos命令行下运行,下面的方法就可以在任一目录上进Dos窗口了。习惯了。呵呵。方法一:    把下面的注册信息存入DosHere.Reg,双击执行DosHere.Reg.在右键菜单就多了个DosHere的选项,可以在任意windows目录进入相应的dos目录下了。Windows Registry Editor Version 5.00[HK

Bell.Hurry的专栏 1699

基于PLC智能立体车库控制系统设计

摘要 本系统设计以三层立体车库为研究对象,通过对立体车库的原理分析、动作流程设计和一系列的软硬件设计,达到立体车库自动化控制的目的。系统采用可编程控制器作为立体车库控制系统的控制单元,实现该系统的工艺要求,通过程序仿真调试,完成系统的各种动作要求,达到自动控制的目的。系统设计分为总体设计、硬件设计以及软件设计。按照立体车库控制系统的控制策略进行图纸设计;重点分析工艺流程图,对立体车库控制系统进行程序编译和MCGS上位机调试,通过系统的调试和修改,达到了基本控制的要求。系统设计明确了工艺要求,确定

DX884164131的博客 3600

modbus

从机地址 功能码 起始地址高位 起始地址低位 数量高位 数量低位 字节数 0001H高位 0001H低位 0002H高位 0002H低位 CRC高位 CRC低位。每个输入寄存器的长度为2个字节。其中,CDH对应线圈0013H到001AH的内容,01H对应线圈001B到001CH的内容,未使用位用0填充。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。

lunhuicnm的博客 9746

如何实现Dos Here

编程时,难免要用到的,此处备份一下。将下面的代码保存为*.reg文件,双击安装即可:   Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\Open_DOS_Box] @="[DOS Here]" [HKEY_CLASSES_ROOT\*\shell\Open_DOS_Box\command]

网海水手 1863

pip——【Fatal error in launcher: Unable to create process】的深度排查与修复指南

本文深度解析了Python包管理工具pip报错【Fatal error in launcher: Unable to create process】的根本原因与解决方案。该错误通常由Python解释器路径变更、虚拟环境损坏或多版本冲突导致。文章提供了从快速排查到彻底修复的完整指南,包括使用`python -m pip`命令绕过启动器、修复或重装pip、重建虚拟环境等核心方法,并给出了预防此错误的最佳实践。

weixin_29306261的博客 598

vb.net的windows窗体实现dos命令

这个例子是从 水如烟的例子 修改过来的。如有不妥之处还请大家指正批评。 Imports System.ThreadingImports System.Runtime.CompilerServicesPublic Class frmCmdExcute    Inherits System.Windows.Forms.Form#Region " Windows 窗体设计器生成的代码 "  

beihangyjs的专栏 1724

一、【vmware虚拟机使用】安装vmware workstations17

本文介绍了VMware Workstation 17的安装与网络配置方法。主要内容包括:通过下载安装包进行标准安装(含许可协议、路径选择等步骤);重点讲解了NAT模式下的网络配置,包括修改子网IP为192.168.2.0网段、设置网关地址和DHCP范围等操作,以避免与主机网络冲突。文章还简要说明了VMware的Hypervisor核心技术原理,包括CPU、内存和存储虚拟化。最后指出完成这些准备工作后,后续将进行CentOS7系统的安装。整个流程配有详细图文说明,适合初学者跟随操作。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 2734

乐企增值税及附加税费(一般纳税人适用)申报表填报能力说明文档V3.009

申报表填报,是指企业在自有业务系统中将算税结果数据按预填规则要求加工汇总后,进行申报表填报的过程。申报表填报前对纳税申报所需的前提条件进行校验。校验通过后,应用前序算税结果数据及预填规则进行纳税申报表预填,生成申报表数据。申报表数据通过申报业务规则校验后,经纳税人确认即完成申报表填报业务。

记录点滴 344

鼠标右键打开dos窗体

终极方法:按住shift ,鼠标右键单击文件夹窗体空白处,可在弹出菜单中选择打开命令窗!....据说win7才有。 !--以下转载:http://www.cnblogs.com/yidishui/archive/2007/05/22/Starting_DOS_Explorer.html 在右键菜单中添加 Dos 窗体 不用每次都要到运行去使用cmd调用在,cd 到目录

lunaticman 1850

财务数字化——解读美的战略规划之财务组织体系建设【附全文阅读】

本文提出适用于集团企业的财务管控方案,面向财务负责人、HR及战略规划人员。方案整合四种管控模式,结合500强案例,构建"职能定位-架构设计-权责划分-人才发展"体系,涵盖财务五大模块。通过明确总部与事业部权责边界,提供组织架构等实操框架,旨在平衡财务管控与业务支持,提升效率与风控能力,满足集团财务体系规范化建设需求。

cdfunlove的博客 663

VS/C# 可视化编程:WinForms窗体基础操作

窗体是一种可视图面,可在其上对用户显示信息。通常通过将控件放置在窗体上并开发对用户操作(如鼠标单击或按键)的响应(即事件)来生成 Windows 窗体应用程序。窗体是对象,窗体类定义了生成窗体的模板,每实例化一个窗体类,就产生一个窗体。

追求。 1万+

Python爬虫实战:爬取ETF基金持仓变化

在python复制编辑本文详细介绍了如何使用Python的Scrapy框架爬取ETF基金的持仓变化信息,包括项目的搭建、数据的提取与存储、以及数据的可视化分析。通过本项目,读者可以掌握基本的网页爬虫技术,并应用于实际的财经数据采集与分析中。

2201_76125261的博客 629

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

codeblocks窗体程序关闭dos窗口

在codeblocks下建立窗体程序时,做图形界面,每次一运行程序就会出现下面的这种黑色的DOS页面的引导页。在调试程序这个dos用起来还是比较方便的,但不需要这个黑色窗体就需要设置关闭了。 在项目名称上右键——选择“Properties”(属性),然后打开如下所示页面,按照下图的标识,将默认的“控制台应用程序”修改成“GUI应用程序”即可! 设置为 GNU application 保存

若是凉夜已成梦 3887

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++ 窗体程序初步(全网最全)

C++窗体程序入门开发:从IDE的选择到每部分的详细讲解再到最后完成窗体程序创建,讲的那是非常详细呢

沛沛霖的博客 4405

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

火语言RPA流程组件介绍--打开文件/运行进程命令

🚩【组件功能】:打开特定的文件、程序、网址等协议或者运行系统服务、DOS命令等。

lewell789的博客 830

C#如何调用DOS命令

在使用C#编辑过程中,通常需要利用外部命令来执行一些操作,从而完成特定的功能。下面小编就以利用C#调用DOS命令“Ver”显示系统版本号为例,给初学C#语言的网友讲解一下具体的调用方法,希望对大家有所帮助。 方法/步骤 打开VS2010,点击”文件“→”“新建”→“项目“, 在打开的”新建项目“窗口中,选择”Windows窗体应用程序“,并将工程命名为“CallDos”,最后点击”确定“创建新工程。 从工具栏将”按钮“控件拖放到编辑窗口中,并将其”Text“命名为”获取系统版本信息“。 接着向编程区域

我不是码农的博客~~~ 1465

java中打开一个新窗口_Java单击按钮打开一个新窗口

这是您可以做的事情,对于这种情况,您有多个窗体或Windows,您可以做的是使用JPanel,可以将此CardLayout设置为LayoutManager,然后您可以将两个JPanel添加到它并使用由它提供的方法.使用绝对定位时不要使用setBounds()这实际上不是将组件放入父容器的正确方法.而是使用setLocation(…)和setSize(…)方法.考虑不要尽可能多地使用绝对定位.从Ja...

weixin_39955418的博客 3432

常用的DOS命令

转载自Remote Li 原文链接:https://blog.youkuaiyun.com/TvTToT/article/details/106744576 1、怎么打开DOS命令窗口? win键 + r (组合键):可以打开“运行”窗口 在运行窗口文本框中输入: cmd 然后回车 2、什么是DOS命令呢? 在DOS命令窗口中才可以输入并执行DOS命令。 在最初的windows计算机中没有图形界面的,只有DOS命令窗口。 也就是说通过执行DOS命令窗口可以完全完成文件的新建、编辑、保存、删除 等一系列操作。 3

weixin_43575838的博客 184

DOS批处理中cd和%dp0、以及cmd /c和cmd /k 的区别

1、项目需求 项目中有个执行端想要通过关闭awt窗体,联动关闭dos窗体 2、bat脚本命令如下 start cmd /k"cd ./jdk1.8.0_191-32/bin && java -Dfile.encoding=utf-8 -Xmx1024m -Xms1024m -Xmn512m -XX:SurvivorRatio=10 -XX:+UseConcMarkSw...

SmileTimLi的博客 5072

在右键菜单中添加Dos快捷通道-dos在这里

在右键菜单中添加Dos快捷通道-dos在这里 在右键菜单中添加 Dos 窗体 不用每次都要到运行去使用cmd调用再cd 到目录下面了。 方法一: 1.在资源管理器中 工具–>选项–>文件类型 2.列表选择:资料夹 3.高级–>新建 4.操作:输入显示名称如:进入DOS 在执行操作的应用程序: cmd.exe /k cd /d %l 确定关闭就ok 注意:请不要设

rheostat的专栏 3402

Windows常用DOS命令汇总

有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRL+C 检查。 BCDEDIT 设置启动数据库中的属性以控制启动加载。 CACLS 显示或修改文件的访问控制列表(ACL)。 CALL 从另一个批处理程序调用这一个。 CD 显示当前目录的名称或将其更改。 CHCP

CloudsRush的博客 556

C#窗体设计基础学习

C#学习: .NET Framework微软官网解析地址:https://docs.microsoft.com/en-us/previous-versions/windows/silverlight/dotnet-windows-silverlight/cc838194(v%3dvs.95) 取消右上角的最大化、最小化、关闭按钮,点击对应属性设为false,删除text后则顶部一行全消失 ...

花开莫与流年错_的博客 4071
上一篇: INNO SETUP卸载程序中加入自定义窗体(窗口)
下一篇: 修改注册表在右键菜单中添加清空文件夹命令
itclock
博客等级 码龄25年 19粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值