将IE收藏夹的内容转录到TTreeView中 |
尚未結案
|
vclphi
一般會員 發表:28 回覆:39 積分:13 註冊:2003-03-06 發送簡訊給我 |
我在网上看到一篇好文章《怎样将IE收藏夹的内容转录到TTreeView控制中》 要求:在Form中放一个TTreeView (tv_FileName)控制
const
IMAGENUM_BOOKCLOSE = 0; //关闭的类型标志
IMAGENUM_BOOKOPEN = 1; //网络地址标志
IMAGENUM_URLPAGE = 2; //打开的类型标志 type
TForm1 = class(TForm)
tv_FileName: TTreeView; //存放目录或文件名的控件
WebBrowser1: TWebBrowser;
......
procedure TForm1.FF_GetDirFileName(strPath: String; //路径
tvFile:TTreeView); //存放目录或文件名的TTreeView控件 var
intRet: Integer;
DirInfo: TSearchRec;
strIniFile: TIniFile;
buffer: String;
tnNew: TTreeNode;
begin
intRet := FindFirst(strPath '\*.*', FaAnyfile, DirInfo); while intRet = 0 do
begin
if (DirInfo.Name <> '.') and //滤掉 .目录
(DirInfo.Name <> '..') and //滤掉 ..目录
(Pos('.lnk', DirInfo.Name) = 0) and //滤掉 *.lnk文件
(Pos('.ini', DirInfo.Name) = 0) then //滤掉 *.ini文件
begin
if (DirInfo.Attr and FaDirectory = FaDirectory) then
begin
tnNew := tvFile.Items.AddChild(tvFile.Selected, DirInfo.Name);
tnNew.Selected := True;
tnNew.ImageIndex := IMAGENUM_BOOKCLOSE; //设定分类目录节点的图标
tnNew.SelectedIndex := IMAGENUM_BOOKOPEN;
FF_GetDirFileName(strPath '\' DirInfo.Name, tvFile);
end else
begin
buffer := DirInfo.Name;
Delete(buffer, Pos('.url', buffer), 4); //滤掉文件名中的 .url
//添加名称到 tvFile中 tnNew := tvFile.Items.AddChild(tvFile.Selected, buffer);
tnNew.ImageIndex := IMAGENUM_URLPAGE; //设定Web页节点的图标
tnNew.SelectedIndex := tnNew.ImageIndex;
//得到URL,并加入到tvURL树中
strIniFile := TIniFile.Create(strPath '\' DirInfo.Name);
buffer := strIniFile.ReadString('InternetShortcut','URL','');
strIniFile.Destroy;
end;
end;
intRet := FindNext(DirInfo);
end; //重置文件名树tvFile的焦点
if tvFile.Selected <> nil then
if tvFile.Selected.Parent <> nil then
(tvFile.Selected.Parent).Selected := True
else (tvFile.Selected).Selected := False;
SysUtils.FindClose(DirInfo);
end; procedure TForm1.tv_filenameDblClick(Sender: TObject);
var Flags: OLEVariant;
begin
Flags := 0;
WebBrowser1.Navigate(tv_filename.Selected.Text, Flags, Flags, Flags, Flags);
end; procedure TForm1.FormCreate(Sender: TObject);
var
strURLFileName: TFileName;
pWinDir:pchar; //windows目录
begin
GetMem(pWinDir, 256);
GetWindowsDirectory(pWinDir,128);
strURLFileName := pWinDir '\Favorites';
FreeMem(pWinDir);
//取得收藏夹的内容
FF_GetDirFileName(strURLFileName, tv_FileName);
end; 其tv_filename确实能转录IE收藏夹的内容,但tv_filenameDblClick显示“您输入的域名或网址无法访问”我想是由于tv_FileName存放的是目录或文件名,而非存放URL地址,如存放了“雅虎”而不是“www.yahoo.com",
只是tv_filename若存放URL地址,又不像是IE收藏夹。
请问该如何改呢? 發表人 - vclphi 於 2003/05/29 16:18:42
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
看程式好像是你自己刪了一段罷 :
引言: //得到URL,并加入到tvURL树中 strIniFile := TIniFile.Create(strPath '\' DirInfo.Name); buffer := strIniFile.ReadString('InternetShortcut','URL',''); strIniFile.Destroy;這一段 buffer 之後應還會處理資料並把 URL 放到 tvURL 的罷 之後可以用 tv_filename 的 selectedindex / absoluteindex 在 tvURL 找到對應的 URL 來打開網頁罷。 |
vclphi
一般會員 發表:28 回覆:39 積分:13 註冊:2003-03-06 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |