Shlwapi.dll(以Path,SH,Str开头的函数)

本文详细介绍了Windows中Shlwapi.dll的作用与使用方法,包括其提供的大量字符串处理函数,如获取文件名后缀名、进行字符比较与复制等操作,以及如何将这些强大的功能集成到应用程序中,简化开发过程。
Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell API函数。
使用方法:
1. 加入#include <shlwapi.h>.
2. 在project(工程)->setting(设置)->link(连接)下objiect/library modules(对象/库模块)中加入shlwapi.lib


 
不管怎么说,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); 
按照下面提供的通达信dll标准制作方法,制作所有股票自2012年以来所有股票日涨幅的中位数,大体思路如下,通过直接读取VIPOC中的二进制数据DAT获取所有股票收盘价,计算日涨幅中位数赋值给pfout数组,#ifndef __PLUGIN_TCALC_FUNC #define __PLUGIN_TCALC_FUNC #pragma pack(push,1) //函数(数据个数,输出,输入a,输入b,输入c) typedef void(*pPluginFUNC)(int,float*,float*,float*,float*); typedef struct tagPluginTCalcFuncInfo { unsigned short nFuncMark;//函数编号 pPluginFUNC pCallFunc;//函数地址 }PluginTCalcFuncInfo; typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**); #pragma pack(pop) #endif 上面代码是dll函数头文件,#include "stdafx.h" #include "TCalcFuncSets.h" //生成的dll及相关依赖dll请拷贝到通达信安装目录的T0002/dlls/下面,再在公式管理器进行绑定 void TestPlugin1(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc) { for(int i=0;i<DataLen;i++) pfOUT[i]=i; } void TestPlugin2(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc) { for(int i=0;i<DataLen;i++) { pfOUT[i]=pfINa[i]+pfINb[i]+pfINc[i]; pfOUT[i]=pfOUT[i]/3; } } //加载的函数 PluginTCalcFuncInfo g_CalcFuncSets[] = { {1,(pPluginFUNC)&TestPlugin1}, {2,(pPluginFUNC)&TestPlugin2}, {0,NULL}, }; //导出给TCalc的注册函数 BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun) { if(*pFun==NULL) { (*pFun)=g_CalcFuncSets; return TRUE; } return FALSE; }这是dll函数中的CPP代码
最新发布
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值