当前位置: 网学 > 编程文档 > DELPHI > 正文

Delphi中WebBbrowser应用

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/07/30
UID = ‘{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}‘;     var      p:procedure(Handle: THandle; Path: PChar); stdcall;     procedure TForm1.OrganizeFavorite(Sender: Tobject);     var      H: HWnd;     begin      H := LoadLibrary(PChar(‘shdocvw.dll‘));      if H <> 0 then      begin     p := GetProcAddress(H, PChar(‘DoOrganizeFavDlg‘));       if Assigned(p) then p(Application.Handle, PChar(FavFolder));      end;      FreeLibrary(h);     end;     procedure TForm1.AddFavorite(Sender: TObject);     var      ShellUIHelper: ISHellUIHelper;      url, title: Olevariant;     begin      Title := Webbrowser1.LocationName;      Url := Webbrowser1.LocationUrl;      if Url <> ‘‘ then      begin       ShellUIHelper := CreateComObject(CLSID_SHELLUIHELPER) as IShellUIHelper;       ShellUIHelper.AddFavorite(url, title);      end;     end;   用上面的通过ISHellUIHelper接口来打开“添加到收藏夹”对话框的方法比较简单,但是有个缺陷,就是打开的窗口不是模式窗口,而是独立于应用程序的。可以想象,如果使用与OrganizeFavorite过程同样的方法来打开对话框,由于可以指定父窗口的句柄,自然可以实现模式窗口(效果与在资源管理器和IE中打开“添加到收藏夹”对话框相同)。问题显然是这样的,上面两个过程的作者当时只知道shdocvw.dll中DoOrganizeFavDlg的原型而不知道DoAddToFavDlg的原型,所以只好用ISHellUIHelper接口来实现(或许是他不够严谨,认为是否是模式窗口无所谓?)。   下面的过程就告诉你DoAddToFavDlg的函数原型。需要注意的是,这样打开的对话框并不执行“添加到收藏夹”的操作,它只是告诉应用程序用户是否选择了“确定”,同时在DoAddToFavDlg的第二个参数中返回用户希望放置Internet快捷方式的路径,建立.Url文件的工作由应用程序自己来完成。     procedure TForm1.AddFavorite(IE: TEmbeddedWB);      procedure CreateUrl(AUrlPath, AUrl: PChar);      var       URLfile: TIniFile;      begin       URLfile := TIniFile.Create(String(AUrlPath));      ?RLfile.WriteString(‘InternetShortcut‘, ‘URL‘, String(AUrl));      ?RLfile.Free;      end;     var      AddFav: function(Handle: THandle;       UrlPath: PChar; UrlPathSize: Cardinal;       Title: PChar; TitleSize: Cardinal;       FavIDLIST: pItemIDList): Bool; stdcall;      FDoc: IHTMLDocument2;      UrlPath, url, title: array[0..MAX_PATH] of char;      H: HWnd;      pidl: pItemIDList;      FRetOK: Bool;     begin      FDoc := IHTMLDocument2(IE.Document);      if FDoc = nil then exit;      StrPCopy(Title, FDoc.Get_title);      StrPCopy(url, FDoc.Get_url);      if Url <> ‘‘ then      begin       H := LoadLibrary(PChar(‘shdocvw.dll‘));       if H <> 0 then       begin        SHGetSpecialFolderLocation(0, CSIDL_FAVORITES, pidl);        AddF

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号