说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度?

HTML文档下载 WORD文档下载 PDF文档下载
VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度?
版本:VB6 / VB5 / VB4-32


或许您看了上面的标题之后,不知道是什么意思,不过,我想您只 要看了下面的说明就会有恍然大悟的感觉了!

压缩前的全路径文件名:
C:\MyFolder\VisualBasic\MyReallyWayTooLongFolderName\ButWhoCares\IhaveTheAPI.doc
压缩后的全路径文件名:
C:\MyFolder\VisualBasic\MyR...\IhaveTheAPI.doc

知道上面标题的意思了吧!这种技巧在很多安装软件中都可以看到,它有几个特色:

1、文件名称完整不变。
2、只縮短路径 (Path) 部份字串。
3、可事先设定压缩后的全路径文件名的最大长度。

或许您会认为这有什么困难?用一些字串处理的函数,例如:Mid$、Left$.... 等就可以做到了!没错。

但是,您知道吗?由于 Microsoft 很多安装软件都会用到这个功能,所以它也有提供一个 PathCompactPath API,它是放在 shlwapi 这个 DLL 文件中。

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

它需要三个引数,说明如下:

hDC:device context handle。
lpszPath:the address of the pathname。
dx:the width in pixels of the spot in which you want the pathname to fit。

來看看实际的例子吧!请在表单中加入一个 CommandButton 及一个 Label,不用更改任何属性,將以下的程序代码复制到表单中:

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

Private Sub Command1_Click()
Dim lhDC As Long, lCtlWidth As Long
Dim FileSpec As String

lhDC = Me.hDC
FileSpec = "C:\MyFolder\VisualBasic\MyReallyWayTooLongFolderName\"
FileSpec = FileSpec & "ButWhoCares\IhaveTheAPI.doc"
Me.ScaleMode = vbPixels
lCtlWidth = Label1.Width - Me.DrawWidth

PathCompactPath lhDC, FileSpec, lCtlWidth
Label1.Caption = FileSpec
End Sub
记住 Label1 的宽度不要太大,如果 Label1 的宽度本來就放得下全路径文件名,那就沒有必要压缩全路径文件名了!
想扩展你的数据库吗?那么先了解一下I/O 白帽黑客将现场爆料Android系统及框架漏洞 9月13日:程序员节,一起来过节吧! 欲与Siri、Google Now比高低:微软开始打造个人助理Cortana 【开源专访】禅道创始人王春生:覆盖项目全周期,回归管理的本质 携程无线创业者大赛成功落幕 梁建章为头名“快展”颁20万奖金 Bug报告:小角色,大用处! iOS开发者必备: 五大编程类工具 多核优化软件MCx释放EMC VNX闪存潜能 手把手教学:详解HTML5移动开发框架PhoneJS 快速学习新技术的几条建议 研发周报:Angular.js or Ember.js 谁将成为Web开发的新宠? 10款免费且开源的项目管理工具 Greg Pass:拯救Twitter的无名英雄 Cassandra杀回数据库排行Top 10,及需求Java 7的2.0版本 安全专家王清将揭秘“大数据时代的大安全” BrainSpace:跟传统搜索说再见 艾普网络的OpenStack实践 移动周报:无需编程,分秒钟DIY一个移动网站 抢占先机:豌豆荚发布视频搜索产品 Cloud-Connect大会Day1:OCP与SwiftStack 云智能手机,将会很快威胁到Android和iPhone? 直接拿来用!超实用的Java数组技巧攻略 腾讯云俱乐部上海站:电商如何利用云提高核心竞争力 iOS开发者必备:六大图片、图标处理类工具 腾讯向搜狗注资4.48亿美金持股36.5% 推荐五款流行的JavaScript模板引擎 为何人人都将成为程序员?看32位美国顶尖精英的说法! MySQL再度失势:继维基百科之后,Google也迁移到了MariaDB Werner Vogels:亚马逊热爱艺术的CTO Jolla宣布Sailfish OS兼容Android手机硬件和应用 在LotusScript中,如何实现将附件保存于服务器的某目录下? CSDN说这里人气低,决定关了这里,大家快来说话啊,真关了我们就没地方说话了 如何将int转化为char? 如何实现窗口中拖放. 如何确定一个数据窗口有几个参数 数据库程序的运行环境问题求救!!! 寻求vb例程 如何用VB6控制NT的服务 try和catch的问题? 求助~!关于FileListBox的问题 请问要在Web页面中放置ActiveX控件,是不是一定要数字签名才能在客户端安装? 表格内容对齐 where can download the crack about Rational XDE Professional v2002 .Net Edition? 调查:现在大家所用的中文输入法是什么?录入速度是多少? 数据库程序的运行环境建立问题求救!!! 伙计们,帮我看看我的安装差在哪一步了,为何多系统下Linux起不来 如何将文件输入流转化为string? 关一个Servlet调用另一个Servlet的问题 有关报表的一个小问题。 怎样才能做繁体版? 100分请教PHOTOSHOP5.0是如何把CMYK颜色转成RGB显示的? 需求进销存或分销 如何替换某字符串中的指定字符串!!! tcp/ip 如何获取文件的创建时间? 如何再98中删除IE的历史纪录,很怪~~~~~~~~~~~! 讨论:从IDL开始所有的编程工作 大虾们如何动态创建Table的field Editor功能 高分求解!与Delphi的参数问题! xml spy suite4.2需要联机注册,有没有方法可以使用? linux为何没有出现在启动菜单 @_@ 在DELPHI中如何把一目录下的某文件移到另一目录中——急 在C#中如何用BinaryReader把DLL文件的内容读出来,并转来string? 如何根据Task ID或Process ID得到hwnd 如何让程序启动时自动hide()阿! 问一个最大化窗体与任务栏的关系的问题 把一表中一字段(字符型)以一條記錄返回出來. Rational Rose 中没有Delphi方面得模块,哪儿有与Delphi接口下载 谁有ActiveReport 2的中文例子和原程?在线等待!急急急! 大家来讨论一下,《设计模式》应该怎么看!! 关于打印的问题,高手关注! datagrid如何实现分页,。net菜鸟 声音问题 access数据库加密后,如何再用ADO与之连接? 有谁用过ms Agent? 很菜的问题! delphi里的widestring类型对应着BCB里的什么类型啊 开了一个socket,acept后如何给ie发一个字符串显示出来? access数据库加密后,如何再用ADO与之连接? 如何查询出所有用户表名 PWS中的一个小问题 保护环境的作文 50字左右 30篇好文章的开头结尾要相连的最好有排比句式用上名言首尾呼应 发挥想象,写成优美的短文,请用上排比·拟人·比喻等修辞手法1·春姑娘迈着轻盈的步伐来了.她提着神奇的花篮,把五彩的鲜花撒向大地,———————————————————————— 如何计算仓库要多大面积? 好文章的开头和结尾!要散文性的那种!越多越好] 求几种写作手法,修辞的举例.如比喻,拟人,夸张,衬托,对比反问,排比等等每种举例三四个即可, 寒假中最难忘的一件事 看《阿凡达》作文600字600字,内容好要在今晚 5篇好文章里5段好开头结尾 一张方桌由1个桌面,4个桌腿组成,如果1立方米木料可以做方桌的桌面50个或做桌腿300条,现在有5立方米的木料,二元一次方程,我得题目没打错 给一个长10m,宽4.8m的会议室地面铺地砖,要求用正方形地砖,地砖的边长最大是多少请大家帮个忙,只能用算式解 在直径为9厘米的圆形花坛外面有一条宽1米的环形小璐.这条小路的面积是要算式 好的有哲理的文章开头要有哲理的,最好别太长啊,作文开头就可以 优美作文开头和结尾! 我要给你别人无法复制的幸福用英语怎么说 校园里的记忆作文急!600字,最好是自己写的,近快,说个提纲就行。好的话还会加悬赏分 给予作文开头和结尾.(优美些) 克隆人类是非法的用英语怎么说 富有哲理的初中的文章,稍短一点! 关于保护环境从我做起 (50字短文) 不可复制的 英语怎么说 哲理性文章开头 谁有环保金点子600字作文奖50分 一个圆形花坛直径5m,在他周围有一圈宽2m的小路,这条小路的面积是多少? 好的文章开头(环境描写的,和哲理的) 一间会议室长665厘米,宽420厘米,要铺地砖,边长?至少要铺几块? 炒菜用英语怎么说?复制的不要! 关于人生感悟的美文 在一个半径是4米的圆形花坛外面,围绕着一条宽0.8米的小道.这条小道的面积是多少? 学校会议室长4.8米,宽3米.要在地上铺地砖,有两秒正方形规格的地砖(边长6分米,边长8分米)选哪种地砖不用切割能也铺地面?这种方砖至少要买多少块? 小炒丝用英语怎么说 作文 一件令你感动的事要亲身经历过的,自己写的,300字,用来当范文,谢谢!今晚就要. 一间房地面长9米,宽4米,如果所铺地砖边长为6分米,用地砖多少块?这是一道数学题 炒菜锅英语怎么说 学校长方形操场的周长是1000米,其中长是300米.操场面积是多少公顷 最难忘的一件事 作文 ·600字! 炒菜用英语怎么说?跪谢! 初一作文校园风景线600字 写篇作文《最难忘的一件事》600字以上. 感人的事作文开头结尾、范文 童年趣事作文开头结尾、范文 【(各3篇以上)五年级水平,400字以上!急.写作文! 初一作文 校园风景线 急! 作文:最难忘的一件事(600字) 海洋占地球上多大面积? 校园风景线--小学六年级作文 仓库中一个托盘大约占多大面积?就是普通装集装箱的托盘通常都是多大尺寸的?当在仓库中摆放时的间隙通常需要多宽.我需要估算一下所需仓库的面积. 关于爱鸟、保护环境的作文急需作文一篇,关于人类爱鸟、从而保护环境类型,600字. 抄袭我的是猪头用英语怎么说 1680吨货物 50公斤一袋 需要多大面积的仓库 具体的 保护、爱护鸟儿属不属于环保的范畴? 关于以怎样《使我们的世界更美丽》为题写不少于80词的英语作文怎样使我们的世界更美丽 kkkkkkkkkkkkkkkkkkk 建筑木工按模板如何算面积 英语作文《如何让我们的城市更美丽》 春天四年级作文很急拜托了! 请用一元一次方程解题 1.一个方桌由一个桌面和四根桌腿做成.已知1立方米的木料可做桌面请用一元一次方程解题1.一个方桌由一个桌面和四根桌腿做成.已知1立方米的木料可做桌面50个或300 一张方桌有一个桌面和四条腿组成,1立方米木料可制做桌面50张或桌腿300条,现在有50立方米的木料,题目不够打:问用多少木料制作桌面,多少木料制作桌腿用二元一次方程 求100个好文章的开头结尾作业..拜托了..网址也可以,要100个,最好是初中的作文,每个字数不要太多,不少于100条 一张圆桌有一个桌面和四条腿组成,如果1平方米木料可制作圆桌的桌面50个,或制作桌腿300条,现有5平方米木料,请你算一下,用多少木料做桌腿,恰好配成圆桌?(列方程解) 滚英语怎么说 求一些好文章的开头和结尾贴近生活,语句优美,最好有些修辞手法及名人名言分别以成长,校园,家庭为背景好的我会追分的~~ 校园里的记忆 作文600字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘