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

用Delphi创建Internet快捷方式

HTML文档下载 WORD文档下载 PDF文档下载
用Delphi创建Internet快捷方式

在Windows中,为了方便文件或者文件夹的访问,我们常常为某些文件或者文件夹建立快捷方式(shortcut)。同样,在Internet Explorer中,我们也可以为自己喜爱的网址建立Internet快捷方式(Internet Shortcut)。只要点击快捷方式,Internet Explorer就会启动,并联接到相应的网站。事实上,除了Internet Explorer可以创建Internet快捷方式之外,在我们的应用程序中也同样可以实现此功能。在本文中,我将要向读者介绍如何在Delphi程序中为网址建立Internet快捷方式。

Internet快捷方式的格式

为了分析Internet快捷方式的文件格式,我们可以先用Internet Explorer为某个网址建立一个快捷方式,然后在DOS窗口中用DIR命令找到Internet快捷方式所对应的文件,并且用edit查看文件的内容。不难发现,Internet快捷方式的文件格式与INI文件的格式是一样的,只不过它的扩展名必须是 .URL罢了。 Internet快捷方式的文件格式如下:

[DEFAULT]

BASEURL=

[InternetShortcut]

URL=

WorkingDirectory=

ShowCommand=

IconIndex=

IconFile=

Modified=

HotKey=

其中BASEURL、URL和WorkingDirectory这3项的含义是不言而明的。ShowCommand规定Internet Explorer启动后窗口的初始状态:7表示最小化,3表示最大化;如果没有ShowCommand这一项的话则表示正常大小。IconFile和IconIndex用来为Internet快捷方式指定图标;如果你不想指定图标,Windows会使用缺省的Internet快捷方式图标。HotKey指定一个整数值;HotKey的值及其含义如下:

833 - Ctrl + Shift + A

834 - Ctrl + Shift + B

835 - Ctrl + Shift + C

836 - Ctrl + Shift + D

837 - Ctrl + Shift + E

838 - Ctrl + Shift + F

1601 - Ctrl + Alt + A

1602 - Ctrl + Alt + B

1603 - Ctrl + Alt + C

1604 - Ctrl + Alt + D

1605 - Ctrl + Alt + E

1606 - Ctrl + Alt + F

...

一个简单的Internet快捷方式只需要在

[InternetShortcut]节中包含URL项就可以了,例:

[InternetShortcut]

URL=http://www.yahoo.com

快捷方式的创建

接下来,我们来看一个非常简单的Delphi例子。此程序将在Windows的桌面上建一个一个名为“计算机世界”的快捷方式,它指向《计算机世界》的首页;快捷方式的图标使用Windows 98/95中System目录(或者Windows NT中的System32目录)下的shell32.dll动态联接库中的第41号图标。

由于Internet快捷方式的文件格式与INI文件的是相同的,我们可以使用Delphi的TiniFile类来读写.URL文件的内容。而要使快捷方式出现在桌面上,我们只要把.URL文件保存在Windows桌面所对应的那个目录之下即可。当前用户的桌面目录可以从注册表中获取,此信息保存在Windows注册表HKEY_CURRENT_USER 根键下的Software\Microsoft\Windows

\CurrentVersion\Explorer\Shell Folders主键的Desktop项中。

示例程序的单元文件的代码如下:

unit Unit1;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

7

StdCtrls

Registry

IniFiles;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var

ini:TIniFile;

Reg:TRegistry;

DesktopPath

FileName

S:String;

Buf:array[0..max_path]of char;

begin

//获取当前用户Desktop文件夹的路径

Reg:=TRegistry.Create;

Reg.RootKey:=HKEY_CURRENT_USER;

try

Reg.OpenKey('Software\Microsoft\Windows

\CurrentVersion\Explorer\Shell Folders'

False);

if Reg.ValueExists('Desktop') then

DesktopPath:=Reg.ReadString('Desktop');

finally

Reg.Free;

end;

if (DesktopPath< >'')and(DesktopPath

[Length(DesktopPath)]< >'\')

then DesktopPath:=DesktopPath+'\';

//将Buf清零

FillChar(Buf

SizeOf(Buf)

0);

//获取Win98/95中的System

文件夹或者NT中的System32文件夹的路径

GetSystemDirectory(Buf

SizeOf(Buf));

S:=Buf;

if (S< >'')and(S[Length(S)]< >'\') then S:=S+'\';

S:=S+'shell32.dll';

//Internet快捷方式的文件名(扩展名必须是URL)

FileName:=DesktopPath+'计算机世界.url';

ini:=TIniFile.Create(FileName);

//指定URL

ini.WriteString('InternetShortcut'

'URL'

'http://www.computerworld.com.cn');

//指定图标文件

ini.WriteString('InternetShortcut'

'IconFile'

S);

ini.WriteString('InternetShortcut'

'IconIndex'

'41');

ini.Free;

end;

end.

腾讯X5浏览服务正式开放 30多款APP成为首批受益者 Node.js设计经验谈 LeanKanban University首位中国认证讲师路宁:看板会为更多国内企业带来深刻变革 环信IM沙龙纪实:无分享不IM,无社交不未来 【工具推荐】ESL:更简洁、更高效的标准加载器 【先锋】亲加通讯云:以云服务模式为App提供社交引擎 2014中国移动开发者大调查第一批获奖名单大曝光 移动开发云服务AVOS Cloud宣布完成A轮融资 Uplinq2014:人工智能嵌入硬件 万物互联建生态 Uplinq2014:基于Vuforia的新奇智能玩具 一应俱全!开源跨平台3D应用开发框架Minko 【线下技术培训】敏捷测试实战解析和系统方案 《近匠》Ping++:简单、高效、第三方支付SDK 有关编程的12个猜想 【问底】王帅:深入PHP内核(二)——SAPI探究 【CTO俱乐部走进汽车之家】活动图文实录 只为逼格?超薄便携式无线充电设备Deuce 戴尔未来重心:云计算、大数据、移动互联与安全 【讲师】搜狐于顺治:Container在搜狐PaaS平台中的应用实践 【先锋】从代码层诊断,云端OneAPM平台让开发者专注开发 阿里将推无线领域重磅计划 阿里百川无线开放大会揭晓 提升网站转化率的四步优化方案 开发者应该了解的API技术清单! 【讲师】腾讯刘永峰:Docker时代,公有云面临的挑战和机遇 移动开发工具服务商Mob推出免费短信验证码SDK 遇见他们,MDCC 2014移动开发者大会嘉宾揭秘 揭秘全球最小无线耳机背后的技术 《最终幻想》之父访谈:我为何转战F2P游戏开发 寓教于乐 11款最适合教儿童编程的学习工具 苹果iPhone6获工信部许可 本月17日在内地发售 使用Redis之前5个必须了解的事情 初学者请教使用XML序列化定制SOAP消息的原理. 系统ODBC驱动坏了,请问如何重新安装???(win2000) 帮忙看看这个问题 请问如何在delphi中对字符串进行操作 help me!局网win98不能看win2k 大家好,第一次到这里来,问几个初级的问题.(得到解答后马上给分!) 关于raize 3.0的问题 怎样高效率的拼接一个大字符串? 十万火急!高分求解! 知道网页的绝对地址,怎么刷新? 简单问题,在字符映射表中得到的unicode,如何插放当前输入框 有关RH8.0的GRUB引导问题-=-解决问题后给分 有兴趣的请来看看 谁有用ASP开发的信息管理的技术方案文档 高分求:禁止在局域网中玩QQ的方法!!(最好是用工具软件和系统策略等等。) 求助,对线程压力的测试 紧急求救!! 关于在application中(不是applet)用MediaTracker读图片的问题,高分酬谢。 又是邮件问题(100分急等) 关于jCreator编写J2EE程序方面的问题 帮忙,急!!!!!!!!!在线等!!! 请各位给我介绍几款 生产 行业使用的进销存软件 tomcat 小问题 河北的老兄们:用16898870如何查高程(水平)分?准考证号不够15位啊? 简单问题,在字符映射表中得到的unicode,如何插放当前输入框 我想找ASP程序员的工作但不清楚要有什么样的作品.急啊 Oracle8.17为什么在我的server2000里不能安装?是不是和我的硬件配置有关系?在线等待。。。 谁有能够在bcb5和6中能够运行的能够实现象Listbox中Checkbox效果的Treeview控件? 基础C语言题..详解100分 高手请进,xsl的发布问题 请问win2000的系统日志放在什么地方?文件名叫什么? 何人用过 IDragSourceHelper 一个关于InstallShield6.3的特难的问题 lotus Notes 数据库问题! 怎样设计纵向的库?难难!!!求求!! 关于代理的疑难问题? 一个简单的问题 请问各位,如何屏蔽掉地址栏里的地址,或者只留一个主页地址!把其他页面的地址屏蔽掉!!!! Oracle如何查询小写表名的数据表,解决了100分! 为啥m_combobox_ct.SetWindowText("")会不管用呢? 弱智型问题,好心人进来拿分吧! 在javabean中怎么去使用输出参数是游标的存储过程,希望的到一个例子 2002年最后一天,失恋了! 静态成员变量是全局变量吗?我能够在一个模块的几个不同文件中声明同名的静态成员变量吗? 求救!!!会不会仅仅是病毒的问题? compute 字段在报表中的应用问题?在线等待! 高分相送,c++ builder中使用ocx控件 关于listview与数据库的问题,请大家帮我看看程序出错在哪?谢谢!! 高手请进!! 高手请进!! 关于数据库问题 中韩两国美女球迷大对比 性感与美貌强苏醒单方面宣布解约 粉丝与李炜粉丝掀专业歌手扎堆?那英:姚贝娜们也需要大东北“辣妈”常颖完美表现折服自己 现餐馆歌者张新嗓音雌雄难辨惊呆导师 汪第三期学员看点 单冲峰战胜脑瘤唱响第《中国好声音》两大天后家族 实力唱将谢娜怀孕照小腹微隆 原来是去美国生子学霸的爱情:“最开心的是和你一起站在新生婴儿出生时的25种表情 萌呆了好声音第三集剧透 学员抢先看广电总局调控歌唱选秀节目 好声音播出《好声音》赢了《快乐男声》 是胜在“杨千嬅爆残黑眼圈挂脸皮肤松弛似60岁宋茜现场秀厨艺 卖萌撒娇萌死人中国好声音学员挑战“禁忌” 导师们依好声音收视破4再压快男 何炅频吐槽暗熊黛林性感红唇妆高调亮相 老娘没有你吉克隽逸赴美会盟巨星 与Snoop 《一又二分之一夏天》发布 男神尼坤卖郭美美低胸露沟晒吐舌卖萌自拍照 自称“丹青有主”人气高宽带接入市场开放成都等16城试点社区享受“三甲检验”收费仅为三甲六成C罗“助阵”亚洲杯 签名球衣等你拿成人们为何受不了2015款福特翼虎焕新上市极简护肤 全效产品,一瓶就够C罗“助阵”亚洲杯 签名球衣等你拿2015 中粮地产7大项目闪耀蓉城警察权力和公民权利并行不悖鼓励创新但禁止私家车接入“专车”平台上海通用汽车2014年销量刷新纪录新机场力争今年开建成安渝高速今年通车谈资良方成都去年单独两孩申请30岁至34岁最澳洲保肝精 一天一粒身体好12楼掉下一块腊肉砸破宝马车窗电子科大最牛书虫:一年借走326本书误食亚硝酸盐7岁女孩中毒走了县管校用 老师可在同一区域多校任教都江堰青城山景区:从观光转为休闲度假
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘