正在阅读:Internet Explorer编程简述(五)Internet Explorer编程简述(五)

2004-09-24 09:59 出处:CSDN 作者:CathyEagle 责任编辑:linjixiong

  5、Refresh

  熟悉TEmbeddedWB的读者可能注意到了ID_IE_CONTEXTMENU_REFRESH(6042)这个ID,在TEmbeddedWB中给出了一个当网页刷新时触发的OnRefresh事件,其中的关键代码如下:


  ......
  if Assigned(FOnRefresh) and ((nCmdID = 6041 {F5}) or (nCmdID = 6042 {ContextMenu}) or (nCmdID = 2300)) then
  begin
  FCancel := False;
  FOnRefresh(self, nCmdID, FCancel);
  if FCancel then Result := S_OK;
  end;
  ......


  其中的6402就是我们这里的ID_IE_CONTEXTMENU_REFRESH,2300是内置的刷新命令,那6041呢。见下图,还是“shdoclc.dll”,6041原来是IE“查看”菜单下“刷新”菜单的命令ID。实际开发中我们发现直接调用WebBrowser的Refresh命令有时候会导致一些错误,可以用这里的方法替换一下。



  6、需要注意的问题

  1)用InvokeIEServerCommand(ID_IE_CONTEXTMENU_ADDFAV)调用“添加到收藏夹”对话框时需要注意的是,IE接收到ID_IE_CONTEXTMENU_ADDFAV命令时是对网页中当前被选中的链接来执行“添加到收藏夹”操作的,如果没有选中的链接,才是将当前网页添加到收藏夹。

  2)新建IE窗口。这是浏览器编程中的难题之一,即从当前窗口新建一个Internet Explorer窗口,完全复制当前页的内容(包括“前进”、“后退”的状态),这可以通过InvokeShellDocObjCommand(ID_IE_FILE_NEWWINDOW)来实现。

  3)显示IE的版本信息。调用InvokeShellDocObjCommand(ID_IE_HELP_ABOUTIE),如下:

  4)InvokeShellDocObjCommand(ID_IE_FILE_PRINT)调出的“打印”对话框是非模态的(我们不太清楚Microsoft的设计意图,我认为“打印”对话框应该是模态的),显示模态窗口的方法请参考我的另一篇文章《利用WH_CBT Hook将非模态对话框显示为模态对话框》


察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:
键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品