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) ;
     }
     //@}
 };
 


断点回归(regression discontinuity design)学习笔记 本篇博文主要是对断点回归的一些学习和总结~ 学习材料如下: 1 断点回归设计RDD分类与操作案例 2 RDD断点回归, Stata程序百科全书式的宝典 3 断点回归设计的前沿研究现状, RDD 4 让“跳跃”更有意义:断点回归设计(RDD) 5 Stata: 断点回归 (RDD) 教程 6 怎么用通俗的语言解释断点回归?它与DID的区别是什么 7 Watering Down Environmental Regulation in China,Guojun He, Shaoda Wang, Bing Zhan 阅读详情

相关推荐

从申请到落地:解锁OAI骨科数据集的实战指南与避坑经验

本文是一份详尽的OAI骨科数据集实战指南,重点解析了从NDA账号申请、权限审批到数据定位与高效下载的全流程。文章分享了使用login.gov注册、Chrome浏览器避坑、nda-tools命令行批量下载等核心技巧,并总结了常见问题排查方法,旨在帮助医学影像与骨关节炎研究者高效解锁这一宝贵数据资源。

weixin_29313547的博客 327

shlwapi.dll中的实用API函数

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

pjl1119的专栏 5212

西电 程序设计基础课程设计 作业

当时做的程序设计课程的作业. 一共五题, 以报告的形式提交. 质量应该比较高(高傲). 完整内容在这里 高精度计算 问题描述 涉及知识点: 数组, 流程控制, 函数等 要求: 用整型数组表示10进制大整数(超过 2322^{32}232 的整数), 数组的每个元素存储大整数的一位数字, 实现大整数的加减法. 问题分析 结构设计 可将高精度整数写成一个类. 成员变量有: int a[MAXN], len; bool negative; 其中, 数组a用来存储大整数的一个数位, a[1]为个位上的数字, a

Wings 2513

Shlwapi介绍

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

weixin_30521161的博客 357

Unity3D 简单水面shader的实现

实现思路 今天来实现一个简单的水面效果。水面的话主要是以下几个效果叠加 1.水面的动态波浪效果,我们这里使用最简单的正弦波加上法线贴图来模拟。如果想要更精确的波动效果可以考虑使用Gerstner波 2.不同水深颜色不同的效果,使用该顶点深度和顶点坐标的差值来计算深度,然后映射到颜色 3.浪涌效果,还是根据顶点深度和顶点坐标的差值来计算深度,然后叠加上一层浪涌 4.折射效果,用grabpass,采样之后进行偏移,最后叠加上去。 代码实现 首先是顶点位移函数,使用正弦函数代入顶点的x坐标和z坐标来算,因为这里写

o83290102o5的博客 1万+

基于FLUENT的圆柱绕流数值模拟与流场优化策略

本文详细介绍了基于FLUENT的圆柱绕流数值模拟方法与流场优化策略。从基础概念、建模技巧到湍流模型选择,全面解析了圆柱绕流模拟的关键技术,并提供了实用的网格划分和参数设置建议。通过具体案例展示了流动控制方法和优化流程,帮助工程师有效降低阻力系数,提升流场性能。

f6g7h8i9j的博客 705

手动导入lib文件

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

qq_35173384的博客 1592

Multisim电路仿真与实验:包含连续时间系统的模拟、周期信号频谱分析、组合逻辑电路:竞争冒险、数字锁

这些实际系统可以是电的或非电的物理量系统,也可以是经济、军事等非物理量系统。矩形周期信号的幅度和周期保持不变,随着占空比的增加(即脉宽加大),主峰高度越高,主峰宽度越窄,各谱线间隔越窄,主峰包含的谱线数量越少,有效频带宽度越窄,主峰内高次谐波分量越少。输入信号所经路径不同而引起的冒险现象,按短暂尖峰极性的不同,可将冒险分为“0-1-0”型险象(也称“1”型)和“1-0-1”型险象(也称“0”型)理想的正弦波的幅度谱包含1条谱线,证明其只有基频分量,而无谐波分量,如果能测出谐波分量,说明该正弦波已有失真。

Jumpingtigger_35的博客 1万+

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

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

file 1275

YOLOv8首发优化:遥感目标检测 | 专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块,解决低空间分辨率、传感器噪声、目标模糊、低光照退化和部分遮挡等限制

一种轻量级网络,其创新性地整合了专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 492

Android SurfaceFlinger——概述(一)

对于系统渲染流程的理解是指导 SurfaceFlinger 设计的核心思想,从 Android 4.1 一直到 Android 9.0 都没有太大的变化。只要抓住这五个核心思想,我们阅读 SurfaceFlinger 的难度就会下降不少。下面看一下 SurfaceFlinger 的体系和 Skia 以及 View的绘制流程的关系。framework 面向开发者所有的 View 是便于开发的控件,里面仅仅只是提供了当前 View 各种属性以及功能。

小旭的专栏 2584

Shlwapi

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

chinabinlang的专栏 2304

QCM2290 PM-3 如何让mirco-usb支持关机充电

PM4125-3插入type-C触发开机进入关机充电的CC脚中断条件是否可以软件上屏蔽, 做到只通过VBUS中断即可触发进入关机充电模式,达到和PM4125-2的效果一样只要插入micro USB 就可以触发进入关机充电模式。硬件团队提议修改寄存器 SCHG_L_MISC_SYSOK_CFG 0x164A bit[4] 目前修改如下 — a/BOOT.XF.4.1/boot_images/QcomPkg/Library/PmicLib/target/Agatti_pmCocos/psi/pm_confi

墨染天玑的博客 443

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

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

2401_89675785的博客 1306

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

VGS® 研发笔记 1445

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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、付费专栏及课程。

余额充值