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

用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.

三年?又三年!今年MDCC2013大不相同! 杨远骋:聚美优品与百度云推送的故事 糗事百科王坚:百度云推送让我们省心 10个最热JavaScript开源框架的社区活跃度对比 2013福布斯中国富豪榜:李彦宏第三、马化腾第五、马云第八 Storm又获东风,Hortonworks计划将其整合到Hadoop企业版 IBM CEO:预测高新技术 五个我最喜欢的方式 我伙呆,硅谷高级工程师年薪16.5万美金起 羡煞旁人的Supercell:Clash of Clans卫冕营收榜冠军 谷歌第三财季利润增36.5% 但摩托罗拉业务继续亏损2.48亿 针对应用开发者的几点建议:注意特征蔓延、加大用户评审…… Ubuntu中文衍生版UbuntuKylin 13.10正式发布 Web设计师和Web开发者之间的区别是什么? 在政府退出后,Google的量子计算机项目面临危机 SQL on Hadoop的最新进展及7项相关技术分享 联想:欲收购黑莓,还能在智能手机领域创造PC神话吗? 谁说Android开发者的收入依然不行? 代码可维护性的神秘面纱 MDCC 2013首批演讲嘉宾名单出炉 议题即将披露 MDCC2013:公开征集讲师和演讲主题 移动周报:IT人必看!9大最火移动开发技能 OpenStack H版发布 盘点2013:21个最火的云初创公司 从摩尔定律到原子计算,2013诺贝尔物理学奖背后的计算机技术 黄峻:从自制纸板键盘的孩子到Adobe技术经理的故事 Web开发正被颠覆 开发者需认清五大新现实 最发人深省的亚马逊面试题,你会如何作答? 所见即所得:8款实用HTML5开发框架 Groovy最受欢迎 Java系开发者更偏爱其他JVM类语言?(图) [开源专访]iNews创始人赵戈戈:36小时开发的PHP版HackerNews 使用Spring框架的12个开源项目 这个语句错在哪里:能不能用字符去逐个的初始化一个字符串 安装SQL时没有选择默认,而是自己新建一个实例,这样如何实现远程代码连接?? 急问Flash conning333(chen)来接分 webapps\ROOT\WEB-INF\web.xml的配置问题 如何清除WEBSPHERE的缓存?一个JSP文件总是无法更新,我重启WEBSPHERE也好,修改该JSP并重新保存也好,都是显示旧页面,真气人! 源代码分析 怎样在DW中制作垂直的线条????急 ! 急!在线等待!!!! 关于dir()的小问题, 这个问题已困惑我几天啦,均没人帮我解决真的好盼望呀 急问FLash 高分求教:一个DataGrid显示双DataTable!走过路过都有份! 怎样代码控制servers中excel的合并单元格?? google能找到我了,散分咯 急问Flash. ADOCE怎样访问excel数据表格? 请 ccmoon(IzuaL) 和 cloudchen(陈系上) 进来领分, 我该怎么做? 关于将输入字母转换为大写的问题! 谁给我解释这个sql语句! 怎么将sql server 6.x 的备份文件,恢复到sql server 7上 请教pb中有没有模式窗口和非模式窗口的概念?? 设备内容句柄在Delphi中有这个类吗?如何表示? hxzhappy(冰雨)快来接分 请问在contexMenu控件中show方法如何写 请问用VC,如何在WIN2000下连接一个SQL数据源? 入参与出参 关于国外发布的软件,可以使注册用户在线或取注册码! win2000下怎样建立代理服务器 有关DBGrid的问题。 在其他版看到一个很有意思的贴子“如果是你招聘人,你会不会招和自己技术,资历差不多的,甚至超过自己水平的?”欢迎大家讨论。 急!关于innerhtml的错误? hxzhappy(冰雨)快来接分 在线求助,急 请教各位,我的sybase的数据库的log设备(即syslogs表)最近增长很快,每天增长40多兆,如何解决??? 想做一个网络代理上网 c语言中三维数组的问题??? 求助:word文件加密后忘记密码如何打开原文件? 请教 : photoshop 中--highlight shadow midtone 提问,非高手勿入,打印的问题,100分,不够另加 关于oracle预留字作字段名的问题。 ● 求助,2000 Professional一登录就自动注销,怎么解决? 一个很棘手的问题? 谁给我解释这个JS函数 請高手幫改寫一段datagrid程序. (100分相送) (2)菜鸟问题!!容易拿分呀!! 如何在SQL SERVER上实现ORACLE中的package的功能 对windows编程,如何控制鼠标箭头阿 在2000下,希望不同的账号登陆,文件的可见属性不一样,能做到吗? 页面元素隐藏的问题 急 读文本出现乱码??? 14题(多选) RT洛克王国星星恶魔技能表进化图 想要全面的滤清器的知识:空滤,机滤,柴滤. 闭合电路中感应电动势的大小与什么有关 闭合电路中产生的感应电动势大小,跟穿过这一闭合电路的磁感应强度成正比吗? 学校的蓝色塑料桌子上有划痕怎么去掉不可能带很大的东西,有没有小一点的,学期末要检查,使用刀子的时候不小心刮去的,一共有3、4个划痕 炉火照天地,红星乱紫烟 译文 炉火照天地,红星乱紫烟的.的意思是什么? 第11题,求分析过程(多选) 圆周运动 最高点时小球与盒子之间恰好无作用力?如图所示,质量为m的小球置于正方体的光滑盒子中,盒子的边长略大于球的直径.某同学拿着该盒子在竖直平面内做半径为R的匀速圆周运动,已 亮亮买了一批纸,订了一本练习册后还剩下30张纸,计划30天用完,25天后,用完了练习册又10张纸,这本练习册是多少张纸? 哥伦比亚举行彩色跑 粉末横飞high普京签署法律规定恐怖分子亲友连带问责百年一遇全环食壮观上演 美欧非观星族朴槿惠称国际社会不能纵容朝鲜 需打破湖南三姐弟遇害初步定为仇杀 学校方面朝鲜谴责韩国对朝政策:改变无异于地球中国古典吉他演奏家在伦敦举办独奏音乐调查称受医改问题影响 奥巴马支持率跌美国高中生图书馆借书逾期不还 被警方国际货币基金组织秘书长林建海:中国等澳工人阅读能力低企业纷纷弃用文字型安长安全新MPV本月上市 预计售价6万权重股仍将会扮演救“市”主!多肽尿素是什么,作用如何?凯迪拉克普及四项新技术 多款新车将使陆风效仿比亚迪 将推插电式混合动力S安美利特张金龙:十三年磨一剑,开创环新手煮妇5分钟逆袭记已不适宜居住 易信带你看雾霾下的京城怎样挽救被极端组织洗脑的“圣战”志愿周四大盘必将这样走 散户千万小心此点平庸,不过是败给了自律
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘