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

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 的宽度本來就放得下全路径文件名,那就沒有必要压缩全路径文件名了!
VB如何为你的应用程序设置热键? VB如何隐藏鼠标指针 VB如何用api检查任务栏中有多少种输入法 VB如何在函数中传递数量不定的参数? VB使用 kb_event 函数模拟键盘操作 VB使用API获取颜色 VB使用标签控件调出浏览器 VB使用调用外部程序函数实现API函数高级功能 未公开API函数揭秘——通用对话框-VB资料 显示文件属性对话框-VB资料 VB用 API 打开打印对话框 VB用API函数改进ListView控件的显示效果 VB用API函数控制光驱的开关 VB用注册表保存数据(VB函数篇) 有关Tray系统盒的VB API函数 在VB中调用API函数动态改变及恢复屏幕设置 在VB中控制Ctrl+Del+Alt键 在VB中使用API函数 (之二) 在VB中使用API函数 (之三) 在VB中使用API函数 (之四) 在VB中使用API函数 (之五) 在VB中使用API函数 (之一) 在VB中用API实现多媒体 VB怎样用VB在应用程序中调用API VB怎样在DELPHI中使用API函数 指定文件夹-VB资料 VB5中注册控件三法 Bug:维护 Internet Transfer Control 之 Username 及 Pass VB对低层硬件访问控制 HitTest的妙用 -VB资料 ListBox项的控制-VB资料 怎样把程序做成曲线图的样子? COMBOBOX查找问题? 很菜的,关于窗体的问题 怎么给jbuiler添加oracle驱动程序!!!!! 谁有手写签名和痕迹保存留的例子???能给我一个吗???一定重谢!! 哪有for win的gd库下载?谢谢 我得代码有错误吗!!在线紧急等待 如何用Java访问微软的DDE Server? 在windows xp中怎么建立虚拟服务器呀? 解决问题,马上结贴 xp風格的問題 请问如何让一个表格的边框的宽度和表格内部的线的宽度不一样? 请问wsad和eclipse哪里有下呢? 如何理解下面的程序段 调查:你(单位)愿意花钱买服务端控件吗? 为什么有些网页是繁体字! 我终于知道什么是英雄了! 关于快捷键。 一个丑人的自白(爆笑) 转载 如何实现信息反馈? 怎样使DataGrid固定显示8行??? 一个简单的问题,关于CListCtrl.. C++文件流的怪问题,竟然不能再次打开??? 怎样在win2000 专业版上使用PHP Linux下如何知道有哪些端口未被使用?? 共享上Internet网的另一台机为何一定要配上DNS服务器地址? 来共同研究开发 文件的变量名拼写错误的检查。。。 人生交叉点, 大家进来帮帮忙 在线等待急急!在超链中有的什怎么传不过去? pb还有出路吗? 如何知道有哪些端口未被使用 请教想在页面里调用js文件达到图片轮显效果 如何在动态库中获取调用该动态库的程序的文件名称? 如何获取灰度图中各象素点的灰度值?(在线等待) 请高手帮我解决这个离散余弦变换(DCT)的问题。高分相送。 求助:sql语名查询? 怎么样在输入数据后立即更新表格? 怎么在tablename是一个参数的表中取字段值? 触发器问题?触发器无法通过确认! 请问如何将字符1转化为数字1呢? 怎样在状态栏中显示页面载入进度? WebEasyMail 很好用,不过是asp的,不知道有没有php的收发邮件的程序代码? WebEasyMail 很好用,不过是asp的,不知道有没有php的收发邮件的程序代码? 菜鸟的一问,请帮忙!! 请帮帮忙指一下路 上一个问题还没解决,所以只有找其它的办法。我要实现直接把邮件发到对方的SMTP服务器 类型转换? 现在有个NCNE国家信息化工程师认证,有没有用? 当数据库使用AddNew--Update插入数据时sql server出现进程死锁,请问为什么呢? Oracle8i技术问题 极坐标在高中数竟中的应用?相对于参数方程来说有神马优点? 用石灰能杀死钉螺吗 水蛭用什么方法可以杀死 改病句 看书时间长了,可以闭上眼睛或向远处眺望,以缓和眼睛疲劳 蚕籽多久可以孵化?新生的蚕籽经过多长时间才可以再次孵化成幼蚕呢?就是说蚕蛾的卵,刚开始是白的,过一天两天就成黑的了,这样黑的卵经过多长时间的酝酿才可以用来孵化幼蚕啊,小时候样 蚂蟥可以杀死吗? 就让我眺望远方迷失方向闭上眼睛试着想想你在身边 这是歌词 我想知道这首歌的歌名!女生唱的 月蚕年蚕孵化时间1.月蚕的蚕卵在多少时间变成小蚕?在过程中需要注意什么?2.年蚕的蚕卵多少时间可以成小蚕?在过程中需要注意什么?3.月蚕的卵我可不可以叫他明年在出小蚕?为什么我爸一 移动彩钢房多少钱37平焊出底座吧1 晚上要让眼睛放松也要眺望远处吗?眺望外面的黑夜?月亮?路灯? 求这个定积分∫(2x+1)/(x^2+1)dx 上限1 下限-1 虽然很简单,可我还是不会,哪位好人人教教我啊,详细点,最好写出步骤 答案好像是π Michael is a very happy boy 改为感叹句 什么是“水蛭三七散”RT.治疗什么的?能治疗肝硬化吗?哪里可以购买呢? 蛾子是什么变的 5mw激光模组能接上250mw激光二极管吗? I don't like China very much.这句的意思是我不太喜欢中国还是我非常不喜欢中国? 脑血栓后遗症吃三七水蛭方 三七2克 水蛭3克 醋20克 是否会导致患者腹泻 这个是什么 变蛾子的吗? He like his Chinese teacher very much.Do you like yours?改错 为什么大象比老鼠大这么多,每分钟心跳却只有30下,而老鼠却有150下?这个数据不一定完全准确,或者应该这么问,为什么恒温动物个体越小,心率越高?3Q 大象的什么东西最长 陕北地区有销售丁烷气体的吗?限陕北地区谢谢 黄粉虫能不能消化塑料? What point are you trying to make? 我的作文集题目该叫什么我叫嘉文,希望根据我的名字起一个题目 我知道有陕西,但怎么会有陕北呀? 在教师前面有一块黑板.的英语是? 骑自行车翻越一个坡地,上坡1千米,下坡1千米.如果上坡的速度是25千米/时,那么下坡要保持什么速度才能使全程的平均速度是30千米/时? 现在的陕北等于陕西吗 定积分,求过程 求激光模组驱动电路图我们准备做模组来卖,但是不会做驱动,谁给指导下? 陕西和陕北陕南和陕北那边比较穷 求定积分, Don't miss the great e_____.you can see many old things.给首字母的填空题 You make a good point的意思是“你的说法很对”吗? 求定积分, 我要求个激光驱动电路越详细越好, point was 如题,)the point was made,…… 求定积分,定积分,上限为2,下限为-2,∫I1-xIdx1-x 的绝对值 you can buy many things at great sale翻译 有两袋米,甲袋比乙袋多25%kg.对还是错? 求此定积分, 长时间看书以后,要向远处眺望休息几分钟,这样做为什么可以有效地预防近视眼的发生? 有两袋米,甲袋比乙袋少19kg,如果从乙袋倒入甲袋2kg,这时甲袋的米相当于乙袋的62.5%.两袋米原来各有几kg 巨蟒跟鳄鱼 自然界里哪个厉害巨蟒跟鳄鱼 还有其他的动物 他们谁最厉害呢 以前看过一个视频 蛇把鳄鱼吃了 但是是一只小鳄鱼 如果是大鳄鱼的话结果会是什么样?最好有狮子跟老虎 等等等 这道题不会,请大家帮忙解答谢谢.过程. 猫每分钟心跳约240次大象每分钟心跳次数约是猫的六分之一,约是老鼠的二十五分之二.老鼠每分钟心跳约几次 我房间好多飞蛾啊.怎么办最近我房间好多飞蛾啊.后面发现是门框角落有个洞.里面飞蛾窝,我把洞堵塞住后.飞蛾就会从墙上各种各样的缝隙中飞出来,晚上开灯后就会很多飞蛾在灯边上.太多啦 同学们在长时间看书后,要想远处眺望休息几分钟,这样可以有效地预防近视眼的发生,从光学的角度分析为什么? 大象什么东西最长 大象什么东西最长. 飞蛾弄死蜜蜂飞蛾和蜜蜂关在一起 两只蜜蜂都死了 飞蛾还活着 我想知道是什么情况 我家飞蛾产卵死后一周大约了,可软卵还没孵化都是黑色的卵回第一楼:怎么增加 蚕黑卵何时孵化不得抄袭! 我家就我一个人的房间里有好多好多的飞蛾,为什么房间内会出现许多飞蛾?要怎么办呢? 为什么飞蛾产的卵是黑的 be the point of doing sth.的意思急.5555555555555 怎么弄死飞蛾 飞蛾产下卵之后该怎么办? 有没有make a decision of doing sth.的说法? 晚上房间很多飞蛾怎么办? 英国铜像常被挂内裤乳罩 政府被迫将其通讯:历史遗迹记录昔日辉煌――泰国旧亲善合作 睦邻友好——国内外人士积极马来西亚举办“小状元汉语经典诵读大赛巴基斯坦塔利班头目死于美无人机空袭 英国一医院医疗过失误诊流产 恐致死逾第五届中国木质玩具文化节在浙江云和开为阻法院强制执行 浙江金华一老人扬言浙江金华一智障儿命悬半空 特勤消防空宁波银行发力托管业务 首只公募基金开浙江云和经贸合作洽谈签约引资50多亿把美式“监听帝国”关入“笼子”杭城周末马拉松大派对 关键词:超越、美国无人机再次出手清除巴塔首领 和谈巴基斯坦塔利班头目死于美无人机空袭 中朝俄荣膺第14届中国吴桥国际杂技艺古巴宣布取缔私营电影放映厅报告称中国超越日本 成韩国材料零部件中国珠算备选“非遗”报告称中国超越日本成韩国材料零部件最美无人机再次出手 巴基斯坦塔利班首领大豆蛋白炒茄子沙尔克夏训开始,新帅受球迷欢迎“人模狗样”又出新视频,这次是13只泡椒猪蹄官方:都灵签下国际米兰中场奥比咸鸭蛋蒸毛蟹蒙塔-埃利斯4年4400万签约步行者桔香胡萝卜丝马洛塔:没球队求购比达尔略伦特酱香茄子阿隆-贝恩斯将与活塞签约三年巴黎欧莱雅沙龙专属 (L\\\'Or官方:沃特福德续约卡斯卡特四年《大清盐商》还原史上最牛土豪俄军否认“库兹涅佐夫”号航母将开赴叙从产品经理角度看姜文之败加盟拜仁,乌尔赖希暂时与妻子分开李嘉格复古写真演绎百变风情 导师那邓肯:下赛季我还会继续打球“单飞”到《好歌曲》 刘雨潼不甘离梦​ 观察|屡被鄙视的心灵鸡汤类杂志都
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘