Secrets in ShlWapi.Dll

原创 2004年09月16日 10:28:00

  我们编程时也许遇到过这样的问题:在一个Label或是Panel上显示路径,当路径过长显示不下的时候,希望像某些安装程序拷贝文件的时候那样把路径缩短,其中部分用省略号代替,比如:

  C:/Program Files/Borland/Delphi5/Source/Rtl/Win-->C:/Program Files/Borland/.../Win

  自己编程实现并不难,不过不知什么原因,我一直没有动手做,忽然有一天,我看到了一篇文章,于是,一切问题迎刃而解,随之而来的,竟是意想不到的收获→
                       ↓

  那是一段Visual Basic的程序,不过,我第一眼就看到了一个函数的声明:PathCompactPath:

  Private Declare Function PathCompactPath
       Lib "shlwapi" Alias "PathCompactPathA" ( _ ByVal hDC As Long,
                              ByVal lpszPath As String,
                              ByVal dx As Long) As Long

  经过几番修改,在Delphi中试验通过了,果然能够做到压缩路径的效果,但我更感兴趣的是,ShlWapi.dll中是不是还有不少可以用的好东东呢?打开MSDN,敲入“ShlWapi”一搜索,果然出现一堆(注意,是“一堆”)以“Path”开头的函数,欣喜之情,不在话下。于是我便一个个查看其功能,发现我们需要的关于路径的几乎所有功能都有相应的的函数可以调用,比如:

  PathAddBackslash、PathRemoveBackslash:在路径后面添加或去除“/”;
  PathIsDirectory、PathIsHTMLFile、PathIsPrefix、PathIsRoot、PathIsURL……

  等等,随便试了几个,可以用,接着我又琢磨如何找出其中全部的函数声明,我知道很多动态链接库在MSDN上都有相应的头文件,这次也许不会例外。果然又被我猜中!ShlWapi.H确实存在。接下来的工作就比较烦了,花了些时间,以“查找、替换”大法为辅助,我把其中关于路径操作的函数声明做成了ShlWapi.pas(ShlWapi.H中包括几部分的函数声明:字符串、路径、注册表、注册表流、调色板,还有一个很有用的函数DllGetVirsion,完整的声明可以在这里下载)。

  再来说说PathComact(或者叫PathEllipsis),PathCompactPath函数需要设备的HDC做参数,使用起来可能会麻烦一点,所以还有另外一个函数PathCompactPathEx,参数与设备无关,不过关于字符和显示宽度的换算也有些地方需要推敲,我做了一个简单的EllipsisPanel控件,可以作为例子。

  同样的功能,也可以用DrawText函数来完成,参数说明在MSDN或者Delphi的Windows SDK Help中找能找到,功能比PathCompactPath要强,调用的时候可以选择是在路径中间省略还是在路径尾部省略(类似于资源管理器的标题栏不能显示完整路径名的时候做的处理)DFS的dfsEllipsisPanel就是用它做的。

发表于“阿甘的家
2000年8月29日

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

Shlwapi.dll(以Path,SH,Str开头的函数)   2012-05-12 09:10:26|  分类: VC函数|举报|字号 订阅 转:http://blog.sina...
  • mummily
  • mummily
  • 2014年12月17日 12:02
  • 472

github秘籍,为你解读Git与Github酷而少知的功能

本秘籍收录了一些Git和Github非常酷同时又少有人知的功能。灵感来自于Zach Holman在2012年Aloha Ruby Conference和2013年WDCNZ上所做的演讲:Git a...
  • qilixiang012
  • qilixiang012
  • 2014年10月29日 09:10
  • 1057

配置魔药(双线程序列动态规划)

配置魔药问题描述: 在《Harry Potter and the Chamber of Secrets》中,Ron的魔杖因为坐他老爸的Flying Car撞到了打人柳,不幸被打断了,从此之后,他的魔...
  • cax1165
  • cax1165
  • 2016年10月05日 19:34
  • 326

持续集成工具:Jenkins

在DevOps的工具链中,有人曾说过唯一不可替换的就是持续集成的工具Jenkins。目前使用较多的可以与之抗衡的是hudson,但是jenkins和hudson,仅仅是被oracle收购之后产生的副作...
  • liumiaocn
  • liumiaocn
  • 2016年08月09日 07:50
  • 2503

shlwapi.dll中的实用API函数

在windows   system目录下有这个动态链接库  BOOL PathFileExists(LPCTSTR lpszPath) 功能:检查文件/路径是否存在    LPTSTR...
  • pjl1119
  • pjl1119
  • 2015年04月21日 15:39
  • 2618

开源项目之Android Secrets(密码箱)

Secrets是为Android系统提供一个强大的密码保护箱,只要将各种密码放到箱子里即可,密码箱提供了导入导出的备份功能!项目如图: 效果如图: 关键源码简单分析: ...
  • banketree
  • banketree
  • 2013年06月17日 21:30
  • 2279

URAL-1584-Pharaohs’ Secrets【二分图最佳匹配】【好题】

题目大意:给出n*m的矩阵,调整字母位置,使得最后形成的矩阵,每四个角字母都相同...
  • loy_184548
  • loy_184548
  • 2017年04月12日 11:02
  • 410

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

Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部...
  • chinaliping
  • chinaliping
  • 2013年01月21日 08:47
  • 803

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

本文转自:http://blog.csdn.net/chinaliping/article/details/8523392 Windows中有一个Shlwapi.dll文件,包含了大量的Windows...
  • lx198986611235
  • lx198986611235
  • 2013年12月07日 09:54
  • 811

高难度:css secrets(会持续更新,每天一个例子的解析)

对css写得很少,还处于很简单的概念,看这本书磨得多小是多小。 关于响应式布局在p42,以下是原话 你添加的媒体查询越多,你的 CSS 代码就会变得越来越经不起折腾。只要用对了,它就是利器。但 是,你...
  • sinat_23900111
  • sinat_23900111
  • 2017年04月14日 23:26
  • 102
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Secrets in ShlWapi.Dll
举报原因:
原因补充:

(最多只允许输入30个字)