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

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

将节能进行到底:Facebook为冷存储寻求廉价闪存 谷歌Q4财报净利润28.86亿美元 超分析师预期 社交媒体的力量:Wood Camera登上iOS付费榜首之谜 屏蔽GitHub是互联网时代的“闭关锁国”吗? 巧妙利用空白设计案例分享(多图) 用友发布2013/新三年业务策略 力推UAP/CSP云平台 AWS集群计算新增内存分析EC2实例 手游:鼓足力气,掰弯传统3D游戏大作 LBA兴起:未来移动广告将基于地理位置 苹果发布2013财年Q1财报:iPhone销量及营收低于预期 不再被墙后 一个全新GitHub到来 与乔布斯并肩作战的日子 Google抛弃Exchange ActiveSync WP用户获DAV支持 Facebook真的要做“Facebook Phone”? 程序员,都去写一写前端代码吧 清除山寨和广告应用,“豌豆洗白白”服务上线 谷歌另类“开源” 程度仍不及Facebook和Twitter 想在云中分一份蛋糕? 不妨试试“山寨” 为何乔布斯脾气怪糟 却能让一群最优秀的人为他卖命? 单页Web设计案例+技巧攻略(多图) IE10里的捕捉模式和响应式设计 在“亚马逊商店”出售自己:产品经理这么找工作 【CTO俱乐部第92期】大规模存储与电商架构演化实战分享 刘黎明:PaaS是非主流业务,要与IaaS融合 个人手机游戏开发者之死 为什么苹果的应用审核是个笑话? 程序员性格怪癖是才华横溢的表现,还是危险分子的征兆? JavaScript Source Map详解 8条学习编程的可靠建议 一周消息树:亲爱的GitHub,我们怎么访问不了你? [回顾] 2012年几大编程语言就业趋势分析 如何在BCB中进行SDK编程? 一个简单关于对话框的问题------->> 用asp将图片插入数据库,到底错在哪?苦恼啊!以前这个也通过了(win2000server+Sql7.0)但...(高分!!!!) 为什么我在Access2000的mdb中只能最多得到一条记录? 男人25岁就大吗? 关于 C 类IP的屏蔽 配置为COM+组件后,CoCreateInstance 失败! 关于C 类 IP的屏蔽 有谁知道本.拉登的QQ,俺找他有事?重奖`~~~~~~~~~~~~~~~~~~~! 有没有人告诉我,HTTP头跟正文中间夹的什么? 请问asp和php能访问webservice吗??? 如何一打开NOTE客户端就执行我的数据库(不能设书签)? true dbgrid控件怎么使一个网格又下拉的列表弹出来 关于计数器的代码 那里有含有K线图的图表控件和像OFFICE的工具栏控件下载? 十万火急!如何在Dialog上显示Menu??(我只能给到27分了) 十万火急!如何在Dialog上显示Menu??(我只能给到27分了)十万火急! 问一下,笔记本上的软驱通用吗? maskedit的问题? delphi中报表的问题 关于常用的几种压缩编码? tomcat启动出错,请问什么原因? 一个小问题。回答就给分? 在JSP页面中,能否嵌入ActiveX控件 增加控件的成员变量对程序有什么影响?会使EXE变大吗? shr 是什么意思? 我想用delphi删除一文件夹下面的全部文件,我可以删除一条记录,但无法自动删除全部,数据,我该如何做??? 77分征收四个Delphi中buttons的bmp图标--顶张、下张、上张、末张! 有谁用C++Builder做过corba SQL Server编程求解!!!!! 请问如何测试C#代码的运行瓶颈以便进行优化 80端口是干什么用的 我快要疯了!有关最简单的mdb数据库连接也出问题 win2000 sever 的问题(高手请进) 请问什么地方有BCB的GIF插件下载?具体地址 谁帮助编写一个VCD(DAT)转MPEG格式的程序! 请问上面的V S.net (4cd)里边包括些什么东东?有Vc和msdn吗? oracle中可以保存多个blob字段吗??? 一个大大的问题。。。 在DOS批命令中,对于交互命令如何自动实现输入Y或N以及按任意键继续? 如何调用DivX的DLL进行MPEG4的编码! 有没有那位使用MSF? 什么是代理服务器? 请问哪里有载以下书籍? 如何将二进制的值写如注册表? 声明 怎样在窗体外画透明的画? 哪位朋友有JAVA2认证复习指南?到那里下载电子版...... 请问怎样将系统提示出错信息改成自己编写的中文提示 菜鸟问题》》》在D5中如何调整各个控件的层次关系,例如将panel中的button移动到form上。 如何设置richtextbox控件中文本的行间距? 马铃薯的根具有储存营养物质的作用吗?那红薯呢?哪个是? 如何种白菜 蝉的幼虫是蛴螬吗说蛴螬是蝉的幼虫,但百度一些人说蛴螬是蝉的幼虫是错误的.到底是? 我们平时吃的土豆和红薯,其实都是植物的根部吗? 独角仙的幼虫和蛴螬幼虫的区别!介绍这两种虫子的生活习性和特点! 两个完全相同的正方体木块拼成一个长方体后表面积减少了40平方厘米,求原来每个长方体的表面积 一个长方体的表面积是200平方厘米,切一刀正好分成两个相同的立方体,每个立方体的表面积是() 怎么种植白菜? 地老虎幼虫的口器是什么? 一个长方体的表面积是200平方厘米,切一刀正好分成两个相同的立方体.每个立方体的 金龟子幼虫怎么养? 哪里可以挖到蛴螬(甲虫幼虫)今天挖蚯蚓钓鱼时偶然挖到一只这样的虫子,果断装钩,效果出奇的好,攻陷大鱼必备,但后来一直在附近挖都挖不到了,请问在什么地方挖到这种虫的几率大一些. 一个长方体的表面积是200平方厘米,切一刀正好分成两个相同的立方体,每个立方体的表面积是()平方厘米. 小客车每辆租费120元,限乘12人.大客车每辆租费160元,限乘18人.有40人去旅游,怎么租车划算? 白菜做饺子馅,是用白菜邦还是用白菜叶? 把3个表面都是18平方厘米的正方体粘成一个长方体,那么这个长方体的表面积是( )cm2? 一个长方体,如果高增加2厘米就变成一个正方体,且表面积增加24平方厘米,原长方体的体积是()立方厘... 一个长方体,如果高增加3厘米,就变成一个正方体,这时表面积就增加108平方厘米,求原来的体积 8根胡萝卜换4个白萝卜,9个白萝卜换3棵大白菜.7棵大白菜换多少根胡萝卜. 把一个长方体的高减少2厘米,表面积就减少24平方厘米,且变成一个正方体,原来长方体的体积是多少立方厘 将一个正方体的高增加3厘米得到一个长方体表面积比原来增加108平方厘米,原正方体的体积是多少立方厘米来我要算式 6个白萝卜换2个白菜,3个胡萝卜换9个白菜,2个胡萝卜换几个白萝卜? 有两堆大白菜,第一堆有72棵,第二堆有96棵,从第一堆中拿多少棵白菜到第二堆,才使第二堆的棵树是第一堆的3倍. 长方体上截下一个体积是108平方厘米的小长方体,剩下是棱长为六厘米的正方体.原来长方体的表面积是( ) 8只胡罗卜换3只白萝卜,6只白萝卜换2棵白菜,5棵白菜换多少只胡萝卜 大白菜和老毛桃哪个好 一个正方体切成4个完全一样的长方体后,表面积总和是108平方厘米,这个正方体的体积是多少? 一根胡萝卜换2个白萝卜,9根白萝卜换3棵大白菜.6棵大白菜换多少棵胡萝卜? 使用了大白菜U盘 如何恢复 求一篇 (昆虫记) 读书心得600字左右 将一个长方体的高减少2厘米就变成了一个正方体,表面积减少了 24平方厘米,求原来体积 大白菜里含钙多吗? 把一个长方体的高减少3厘米就成了正方体表面积比原来减少了24平方厘米原来长方体的体积是多少立方厘米? 胡萝卜,土豆,马铃薯,黄瓜都属于植物体的什么?如根茎叶. 你好就是草坪里面的蛴螬,一大片大片的饿,把整个草坪都咬死完了,手轻轻一碰草坪就脱掉了,然后就是马蹄请问怎样才能彻底清除马蹄金这种杂草呢,有没有药可以根治的,草坪里面太多了,人工 金龟子是不是资源昆虫 下列蔬菜中,属于植物果实的是 A.马铃薯 B.大豆 C.黄瓜 D.花菜 一个长方形的高减少3厘米,就变成了一个正方体,表面积比原来减少60平方厘米.原来长方体的体积是多少? 金龟子是什么昆虫 西红柿,黄瓜,土豆,洋葱,胡萝卜哪种营养最多?(急要!)各有什么维生素? 老师有27人,学生有203人,准备租几辆出租车.大客车限坐42人,每辆每天租金1000元,中巴限坐24人,每辆每 成虫的金龟子吃什么?寿命有多长? 某旅游公司为甲乙丙三个旅游团提供ABCD四条旅游路线,求恰有两条线路没有被选择的概率,要算式 把一个长方体分成两个完全一样的正方体后,表面积增加了40平方厘米,原来长方体的表面积是多少平方厘米 190人去秋游,已知大客车一辆每天1000元,限坐43人,中巴每辆每天600元,限坐24人.最省钱的方案.要写多些方案,最后比较 土豆、地瓜、萝卜分别是植物的根还是茎 怎样种春白菜 地蚕草是虫吗 46胡萝卜,马铃薯,莲藕,地瓜这四种植物人通常吃的部分是 【填根或茎】A根茎根茎B根茎茎根C根根茎茎D根茎茎茎 怎样种植大白菜 猪肉白菜馅的饺子蒸熟馅变红 能吃吗 长,宽相等的长方体,高截4分米,剩下成正方体,表面积比原来少80立方分米,原来的长方体的体积是多少?一个长,宽相等的长方体,如果高截去4分米,剩下的就成了一个正方体,表面积比原来少80立方 校园内的草坪有金龟子幼虫,如何除去?要除去虫但又不能让草坪枯萎. 猪肉白菜陷饺子怎么做好吃 从一长方体上截下一段长4分米的小长方体后,余下的是个正方体,表面积比原来少80平方分米,原来长方体的体积 怎样种大白菜 白菜猪肉水饺馅我拌的怎么那么多水啊?谁知道请告诉我,谢谢 土豆和红薯都是用根繁殖吗?HELP ME! 怎么分辨独角仙幼虫和金龟子幼虫? 小客车每辆1800元,限坐乘客12人,大客车每辆4200元,限坐乘客30人,有73人,怎么租车最省钱
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn