Shlwapi 简介

shlwapi32位.h和.lib Shlwapi.dll提供了大量处理Windows字符串的方法,这些方法,可以让你工作更加简便 立即下载

Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell API函数。


不管怎么说,Shlwapi.dll提供了大量处理Windows字符串的方法,这些方法,可以让你工作更加简便,通常,我们需要获取一个文件名的后缀名,使用MFC的CString查找字符串可以获取,但是麻烦,每个人的实现都不一样,用Shlwapi中提供的函数PathFindExtension直接就返回一个后缀名的指针。

Shlwapi主要分为三类函数,第一类是字符串处理函数,通常以Str开头,第二类是路径或者文件夹处理函数,通常以Path开头,第三类是注册表处理函数,通常以SH开头。每一类函数,都要区分A和W。

常见的字符串处理函数有:

StrChr ,StrChrI,StrCmpN,StrCmpNI,StrCSpn,StrCSpnI,StrDup,StrFormatByteSize(字节大小格式化),StrFromTimeInterval,StrIsIntlEqual,StrNCat,StrPBrk,StrRChr, StrRChrI,StrRStrI,StrSpn,StrStr,StrStrI,StrToInt,StrToIntEx(可以讲16进制字符串转换为10进制值),StrTrim(删除收尾空字符串),StrCat,StrCmp,StrCpy,ChrCmpI,

常见的Path处理函数有:

PathAddBackslash,PathAddExtension,PathAppend,PathBuildRoot, PathCanonicalize,PathCombine,PathCompactPath,PathCompactPathEx,PathCommonPrefix,PathFileExists,PathFindExtension,PathFindFileName(类似与basename中后面部分,获取得到整个文件名), PathFindNextComponent(获取得到除盘符外的所有文件名),PathFindOnPath,PathGetArgs,PathGetCharType,PathGetDriveNumber,PathIsDirectory,PathIsFileSpec(仅有文件名部分,不能够包括:和\符号),PathIsPrefix,PathIsRelative,PathIsRoot,PathIsSameRoot,PathIsUNC,PathIsUNCServer,PathIsUNCServerShare,PathIsContentType,PathIsURL,
PathMakePretty,PathMatchSpec,PathParseIconLocation,PathQuoteSpaces,PathRelativePathTo,PathRemoveArgs,PathRemoveBackslash,PathRemoveBlanks,
PathRemoveExtension,PathRemoveFileSpec,PathRenameExtension,PathSearchAndQualify,PathSetDlgItemPath,PathSkipRoot,PathStripPath,
PathStripToRoot,PathUnquoteSpaces,PathMakeSystemFolder,PathUnmakeSystemFolder,PathIsSystemFolder

常见的注册表处理函数有:

SHDeleteEmptyKey,SHDeleteKey, SHDeleteValue,SHGetValue,SHSetValue,SHQueryValueEx, SHEnumKeyEx,SHEnumValue,SHQueryInfoKey,
SHRegCreateUSKey,SHRegOpenUSKey,SHRegQueryUSValue,SHRegWriteUSValue,SHRegDeleteUSValue,SHRegDeleteEmptyUSKey,SHRegEnumUSKey,
SHRegEnumUSValue,SHRegQueryInfoUSKey,SHRegGetUSValue,SHRegSetUSValue,SHRegGetBoolUSValue,SHOpenRegStream,


其他函数

创建GDI帮助函数

SHCreateShellPalette

DLLGETVERSIONPROC指针,用来获取dll的版本号

和DllInstall原型定义

STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine); 



/*
     Copyright (C) =USTC= Fu Li
 
     Author   :  Fu Li
     Create   :  2008-6-27
     Home     :  http://www.phoxo.com
     Mail     :  crazybitwps@hotmail.com
 
     This file is part of UIStone
 
     The code distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
     Redistribution and use the source code, with or without modification,
     must retain the above copyright.
 */
 #pragma once
 #include <shlwapi.h>
 #pragma comment (lib, "shlwapi.lib")
 
 //-------------------------------------------------------------------------------------
 /**
     File helper.
 */
 class FCFileEx
 {
 public:
     /**
         Get folder that module locate, with backslash('\') append \n
         hModule - NULL to get current process folder.
     */
     static CString GetModuleFolder (HMODULE hModule=NULL)
     {
         TCHAR   s[MAX_PATH] = {0} ;
         GetModuleFileName (hModule, s, MAX_PATH) ;
         PathRemoveFileSpec (s) ;
         PathAddBackslash (s) ;
         return s ;
     }
 
     /// Get folder that file locate, with backslash('\') append.
     static CString GetFileFolder (LPCTSTR strFilename)
     {
         TCHAR   s[MAX_PATH] = {0} ;
         lstrcpyn (s, strFilename, MAX_PATH) ;
         PathRemoveFileSpec (s) ;
         PathAddBackslash (s) ;
         return s ;
     }
 
     /// Get file's size.
     static INT64 GetSize (LPCTSTR strFilename)
     {
         WIN32_FILE_ATTRIBUTE_DATA   fd ;
         if (GetFileAttributesEx (strFilename, GetFileExInfoStandard, &fd))
         {
             LARGE_INTEGER   n ;
             n.LowPart = fd.nFileSizeLow ;
             n.HighPart = (LONG)fd.nFileSizeHigh ;
             return n.QuadPart ;
         }
         return 0 ;
     }
 
     /// Get file's extension name, not including leading period.
     static CString GetExtName (LPCTSTR strFilename)
     {
         CString   s(strFilename) ;
         int   n = s.ReverseFind('.') ;
         if (n != -1)
         {
             return s.Mid(n+1) ;
         }
         return _T("") ;
     }
 
     /// Read file to memory.
     static BOOL Read (LPCTSTR strFilename, std::vector<BYTE>& file_data)
     {
         file_data.clear() ;
 
         BOOL     b = FALSE ;
         HANDLE   f = CreateFile (strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
         if (f != INVALID_HANDLE_VALUE)
         {
             DWORD   nLength = ::GetFileSize(f, NULL) ;
             if (nLength)
             {
                 file_data.resize (nLength) ;
 
                 DWORD   dwRead ;
                 ::ReadFile (f, &file_data[0], nLength, &dwRead, NULL) ;
                 b = (dwRead == nLength) ;
             }
             CloseHandle (f) ;
         }
         assert(b && file_data.size()) ;
         return b ;
     }
 
     /// Write buffer to file, if file already exist, it will be delete before write.
     static BOOL Write (LPCTSTR strFilename, const void* p, int nLength)
     {
         SetFileAttributes (strFilename, FILE_ATTRIBUTE_NORMAL) ;
 
         BOOL     b = FALSE ;
         HANDLE   f = CreateFile (strFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) ;
         if (f != INVALID_HANDLE_VALUE)
         {
             DWORD   nWrite ;
             ::WriteFile (f, p, nLength, &nWrite, NULL) ;
             b = ((int)nWrite == nLength) ;
             CloseHandle (f) ;
         }
         assert(b) ;
         return b ;
     }
 
     /// Get a temp file path.
     static CString QueryTempFilePath()
     {
         TCHAR   szTmpPath[MAX_PATH],
                 szFilename[MAX_PATH] ;
         ::GetTempPath (MAX_PATH, szTmpPath) ;
         ::GetTempFileName (szTmpPath, _T("t"), 0, szFilename) ;
         return szFilename ;
     }
 
     /// @name Read/Write INI file.
     //@{
     /// Read string key from ini file, return FALSE if key doesn't exist.
     static BOOL INIRead (LPCTSTR strFilename, LPCTSTR strKey, CString& s, LPCTSTR strSection=_T("app"))
     {
         TCHAR   b[512] ;
         DWORD   dwWrite = GetPrivateProfileString (strSection, strKey, _T("\n"), b, 512, strFilename) ;
         if ((b[0] == '\n') && (b[1] == 0))
             return FALSE ;
 
         if (dwWrite > (512 - 8))
         {
             std::vector<TCHAR>   buf (4096) ;
             GetPrivateProfileString (strSection, strKey, _T("\n"), &buf[0], (DWORD)buf.size(), strFilename) ;
             s = &buf[0] ;
         }
         else
         {
             s = b ;
         }
         return TRUE ;
     }
 
     /// Read int key from ini file, return FALSE if key doesn't exist.
     static BOOL INIRead (LPCTSTR strFilename, LPCTSTR strKey, INT64& n, LPCTSTR strSection=_T("app"))
     {
         TCHAR   b[32] ;
         GetPrivateProfileString (strSection, strKey, _T("\n"), b, 32, strFilename) ;
         if ((b[0] == '\n') && (b[1] == 0))
             return FALSE ;
 
         n = _ttoi64(b) ;
         return TRUE ;
     }
 
     /// Write a int key to ini file.
     static BOOL INIWrite (LPCTSTR strFilename, LPCTSTR strKey, INT64 n, LPCTSTR strSection=_T("app"))
     {
         CString   s ;
         s.Format(_T("%I64d"), n) ;
         return INIWrite (strFilename, strKey, s, strSection) ;
     }
 
     /// Write a string key to ini file.
     static BOOL INIWrite (LPCTSTR strFilename, LPCTSTR strKey, LPCTSTR strValue, LPCTSTR strSection=_T("app"))
     {
         return WritePrivateProfileString (strSection, strKey, strValue, strFilename) ;
     }
     //@}
 };
 


OpenClaw Windows 最详细安装指南 Windows上养龙虾:OpenClaw完整安装教程+钉钉接入,助你养只大龙虾 阅读详情

相关推荐

异步FIFO的隐形陷阱:复位信号同步化实战解析

本文深入解析异步FIFO设计中复位信号同步化的隐形陷阱,重点分析赛灵思xpm_fifo_async原语在FPGA应用中的常见问题。通过实战代码和系统集成方案,提供复位同步化的最佳实践,帮助工程师避免跨时钟域通信故障,提升系统可靠性。

keras9composer的博客 245

shlwapi.dll中的实用API函数

在windows   system目录下有这个动态链接库  BOOL PathFileExists(LPCTSTR lpszPath) 功能:检查文件/路径是否存在    LPTSTR PathFindFileName(LPCTSTR pPath) 功能:获得路径中的文件名 例如: PathFindFileName( “c:\\Program Files\\File.txt”

pjl1119的专栏 5212

rockchip rk3566 android11 网口log报错: DMA engine initialization failed

问题描述:上电初始化前将网口插入,然后上电初始化网口能够正常使用,且能够找到PHY,ifconfig 查看能够有eth0 产生,网口正常使用且能够热插拔,但上电初始化时,不插入网口,就会报DMA engine initialization failed 错误,DMA 初始化的时候出错了。 分析:一般产生这个问题可以认为是GMAC 的工作时钟出问题了。先测量时钟引脚是否有时钟,时钟频率以及幅度等指标是否正常,主要确认以下几个方面: 1.IOMUX 出错,检查时钟脚寄存器值是否正确。 2.时钟方向以及配置

qq_48709036的博客 2万+

Shlwapi介绍

Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell API函数。不管怎么说,Shlwap...

weixin_30521161的博客 357

Windows下快速搭建Kettle开发环境:基于9.4.0.0版本的保姆级教程

本文提供Windows系统下Kettle 9.4.0.0开发环境的详细搭建指南,涵盖源码获取、Maven配置优化、高效编译及部署运行全流程。通过实战验证的步骤和常见问题解决方案,帮助数据工程师快速完成环境配置,提升ETL开发效率。

weixin_28829479的博客 331

Python爬虫教程:抓取地方政府网站的公开文件与政策信息

Web爬虫是指一种自动化脚本,用于模拟人类浏览器访问网页、提取网页内容的数据抓取工具。发送请求到目标网页;获取网页内容;解析网页内容,提取所需数据;将数据保存或进一步处理。爬虫可以抓取各种形式的数据,如文本、图片、文件等。本教程将重点展示如何抓取地方政府网站上公开的政策文件、公告等信息。许多政府网站都会采取一定的反爬虫措施,防止大量数据被爬取。IP封锁:如果短时间内大量请求来自同一IP,可能会被封锁。验证码:一些网站会使用验证码来验证访问者是否为机器人。动态加载。

2201_76125261的博客 1981

手动导入lib文件

手动导入lib文件 例: 导入 Shlwapi.lib : #include <Shlwapi.h> #pragma comment(lib,“Shlwapi.lib”)

qq_35173384的博客 1592

【人工智能】RAG如何根据实际需求选择和进行文档解析(如 PDF、Word、TXT、网页等)?

文档解析的核心在于根据解析目标、文档类型和处理量选择合适工具。PDF、Word、TXT和网页各有特性:PDF需区分可编辑与扫描版,Word需处理结构化内容,TXT简单但需注意编码,网页需应对动态内容。解析场景包括提取纯文本、结构化数据、保留格式和批量处理。非技术用户可借助工具如Adobe Acrobat、WPS和在线OCR,技术用户可通过编程实现自动化。通用流程为:明确目标、分析文档属性、选择工具并测试优化。核心是“工具适配需求”,无需追求万能方案。

奶爸的编程之路,也就一周冷个三天 506

Windows系统丢失shlwapi.dll文件导致系统出现错误

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个shlwapi.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现shlwapi.dll丢失要怎么解决?

file 1275

Taro React组件使用(5) —— RuiPasswordInput 密码输入框显示隐藏和清空

初始化时,需要将传入的 value 赋值给当前组件的 value, 不能直接修改 props 的 value;在组件内输出组件内的变量时,最好先判断输出函数是否定义,再输出,否则很容易引起报错。

止于至善 891

SAP SD模块定价过程后台配置简介

只有手工输入定价时(例如,在定价中的定价浏览屏幕中),或者只有从外部处理转移这些定价时(例如,成本核算),才将这些定价包括在确定(价格确定、输出确定,批次确定)之中。定价过程的定义和分配是SD模块中最核心的配置,包含了条件表、条件类型、存取顺序、发票类型、客户定价过程等,确定了销售订单已什么价格销售、税率、附加折扣等多个条件行程有一个定价过程。12、小计:记录该条件类型在VBAP表中是否存储,以及其后续用途,如记入信贷,占用信贷额度,记入成本等,如果需要金额暂用信贷额度的话,在小计这里选择A即可。

我小时候很黑的博客 3782

Shlwapi

Shlwapi介绍 Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell A

chinabinlang的专栏 2304

[SC]SystemC在CPU/GPU验证中的应用(六)

本文提供了一个SystemC学习路线图,包含50个由浅入深的编程实例,涵盖从基础模块到复杂SoC建模的全过程。示例包括:基础模块(时钟、计数器)、通道(FIFO、握手)、TLM2.0接口、总线模型(AXI-Lite)、CPU/GPU内核实现、功耗分析、断言验证等。重点展示了SystemC在硬件验证中的关键应用:VCD波形生成、UVM-SystemC框架、Verilog DPI协同仿真、Python集成、NoC路由器和完整SoC建模(CPU+Cache+DRAM+互连)。每个示例提供完整代码和详细注释,建议分

元直的博客 1492

找不到shlwapi.dll文件或shlwapi.dll文件丢失该怎么办?

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个shlwapi.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现shlwapi.dll丢失要怎么解决?

2401_89675785的博客 1306

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别

CRT (C Runtime) 的字符串函数就是我们常见的 strcmp, strchr, strstr 等等Windows 系统DLL shlwapi.dll  也提供了类似的字符串处理函数,只是大小写有所不同: StrCmp, StrChr, StrStr 等。 两者的区别在于:1) CRT  的字符串函数不支持 Unicode 字符串 (wchar_t)2) CRT 

phphot 1924

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

利用ShlWapi.dll得到超长路径名的缩写格式

    我们编程时也许遇到过这样的问题:在一个Label或是Panel上显示路径,当路径过长显示不下的时候,希望像某些安装程序拷贝文件的时候那样把路径缩短,其中部分用省略号代替,比如:  C:/Program Files/Borland/Delphi5/Source/Rtl/Win-->C:/Program Files/Borland/.../Win   自己编程实现并不难,不过不知什

VGS® 研发笔记 1445

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Shlwapi字符串路径注册表处理函数

Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell API函数。 使用方法:

I am a coder 2227

Secrets in ShlWapi.Dll

  我们编程时也许遇到过这样的问题:在一个Label或是Panel上显示路径,当路径过长显示不下的时候,希望像某些安装程序拷贝文件的时候那样把路径缩短,其中部分用省略号代替,比如:  C:/Program Files/Borland/Delphi5/Source/Rtl/Win-->C:/Program Files/Borland/.../Win   自己编程实现并不难,不过不知什么原因,

eagleboost's blog 4621

VC++下Shlwapi系列API操作注册表

上一篇博客介绍了WinReg系列API操作注册表,这类API操作注册表比较麻烦,写起来代码交多,而使用SH***系列API就会简化很多。Shlwapi系列API操作注册表,该类API适合低版本的windows操作系统,这一系列函数使用极其方便。使用它们操作注册表,一行代码解决HKEY系列函数几十行代码才能解决的问题。针对操作频次比较低的注册表,使用这类API,这类API使用简单,但是次都会执行打开、关闭操作,相对于WinReg类型API,效率比较低 SH***主要API如下: SHSetValu...

hsy12342611的专栏 645

Windows中Shlwapi介绍

Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法, 这些方法,在通常的程序应用中,经常会用到, 有一部分处理方法,在CRuntime中也存在,但不方便使用。 有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。 从Shlwapi名称看,这个应该是Windows的Shell AP

D.D.U的博客 4681

Shlwapi.dll 应用系列

#include #include #include "Shlwapi.h"void main( void ){ // String for root name char buffer_1[4]; char *lpStr1; lpStr1 = buffer_1; // Generate a root path based on the drive number (0/25) // "Exampl

why 462

利用IE自带的Shlwapi.dll实现文本框的自动完成

实现文本框的自动完成功能有很多方法,这里介绍的是用IE自带的Shlwapi.dll实现的方法。一、介绍Shlwapi.dllShlwapi.dll和Comctl32.dll,Shell32.dll一样是随着IE而分发的,所以如果你想得到最新的版本必须下载最新版的IE。其中,Shell32.dll和Comctl32.dll的最初版本是4.0版,她是随着Windows95和Windows NT分发的;

1227

shlwapi.h所包含的函数

1. 加入#include . 2. 在project(工程)->setting(设置)->link(连接)下objiect/library modules(对象/库模块)中加入shlwapi.lib.PathAddBackslash        //路径后添加反斜杆 CString.GetBuffer(_MAX_PATH)PathAddExtension        //添加扩展

Darcy Liu 1万+

Shlwapi.h的所有函数列表

下面是Shlwapi.h中的所有函数列表,注意:在使用之前一定要查询最新的MSDN,以确定哪些函数有安全隐患,因而是不被推荐使用的。 String Function ===================================== CharLowerWrapW CharUpperBuffWrapW ChrCmpI CompareStringWrapW GetAcceptLa

autumn20080101的专栏 1801

[Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别

CRT(C Runtime) 的字符串函数就是我们常见的 strcmp, strchr, strstr 等等 Windows 系统DLL shlwapi.dll 也提供了类似的字符串处理函数,只是大小写有所不同: StrCmp, StrChr, StrStr等。 两者的区别在于: 1)CRT 的字符串函数不支持 Unicode 字符串 (wchar_t) 2) C...

anjichan4261的博客 149
上一篇: 补码、原码、反码
下一篇: VC++常用字符串转换函数
appcup
博客等级 码龄14年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值