Count:要拷贝的字符串个数,代码中为URL文件名长减4,目的是去掉URL文件名的后缀“.URL”;
2、取得的信息保存为HTML文件,并将其设为浏览器首页
为了便于理解,
程序中首先将取得的收藏夹信息导入到一个Richedit中,然后加入HTML文件的头尾信息(可以不要)。这样做还有一个好处是可以用户可以直接修改要生成文件的HTML源代码。
导入Richedit的
程序代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
pidl: PItemIDList;
FavPath: array[0..MAX_PATH] of char;
begin
SHGetSpecialFolderLocation(Handle, CSIDL_FAVORITES, pidl);
SHGetPathFromIDList(pidl, favpath);
//加入HTML文件头信息
memo1.Lines.Add('''');
memo1.Lines.Add('''');
memo1.Lines.Add('''');
memo1.Lines.Add(''
我的收藏夹
'');
memo1.Lines.Add(''
--------------------------------------------------------------------------------
'');
//取得收藏夹信息
memo1.Lines.add(GetIEFavourites(StrPas(FavPath)).gettext);
//加入HTML文件尾信息
memo1.Lines.Add('''');
button2.Enabled:=true;
showmessage(''代码生成完成!'');
end;
在以上代码中,有两个函数要注意:
(1)SHGetSpecialFolderLocation
此函数的功能是取得系统特定目录的路径;函数如下:
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(;
HWND hwndOwner,
int nFolder,
LPITEMIDLIST *ppidl
);
参数解释:
hwndOwner:HWND信息;
nFolder:需要取得的路径的代码,
程序中为CSIDL_FAVORITES收藏夹路径;
*ppidl:路径保存指针;
(2)SHGetPathFromIDList
此函数从指针取得路径信息;函数如下:
WINSHELLAPI BOOL WINAPI SHGetPathFromIDList(
LPCITEMIDLIST pidl,
LPSTR pszPath
);
参数解释:
pidl:指针信息,
程序中从SHGetSpecialFolderLocation取得;
pszPath:路径保存字符串,
程序中为favpath;
3、导出文件,并设置其为浏览器首页
procedure TForm1.Button2Click(Sender: TObject);
var
Reg: TRegistry;
deskpath:string;
begin
//取得桌面路径
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey(''Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders'', false) then
deskpath:=Reg.readString(''Desktop'');
finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
//设为首页
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey(''Software\Microsoft\Internet Explorer\Main'', false) then
Reg.writeString(''Start Page'',deskpath+''\我的收藏夹.htm'');
finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
//将文件导出到桌面
memo1.Lines.SaveToFile(deskpath+''\我的收藏夹.htm'');
showmessage(''文件导出完成!'');
end;
以上代码从注册表获得Windows桌面路径,然后输出文件,并将此文件设置为浏览器首页。设置为浏览器首页的实现就是修改
注册表:“HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main”中的键值“Start Page”就可以了。
三、总结与启示
看了以上代码,我们可以得到一些编程思路如:遍历文件,读写注册表等。如果仔细想想,我们还可以发现怎样将一个网址直接加入收藏夹的思路!
完全源代码:
unit UFav2HTML;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,ShlObj,shellapi,Registry;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
function GetIEFavourites(const favpath: string): TStrings;
procedure B