如何刷新浏览器窗口?

时间:2013-05-03 05:56:08

标签: c++ windows winapi browser refresh

目前,我正在使用以下SendInput hack刷新浏览器窗口:

void GenerateKey ( int vk , BOOL bExtended)
{
    KEYBDINPUT  kb={0};
    INPUT    Input={0};
    // generate down 
    if ( bExtended )
    kb.dwFlags  = KEYEVENTF_EXTENDEDKEY;
    kb.wVk  = vk;  
    Input.type  = INPUT_KEYBOARD;

    Input.ki  = kb;
    ::SendInput(1,&Input,sizeof(Input));

    // generate up 
    ::ZeroMemory(&kb,sizeof(KEYBDINPUT));
    ::ZeroMemory(&Input,sizeof(INPUT));
    kb.dwFlags  =  KEYEVENTF_KEYUP;
    if ( bExtended )
    kb.dwFlags  |= KEYEVENTF_EXTENDEDKEY;

    kb.wVk    =  vk;
    Input.type  =  INPUT_KEYBOARD;
    Input.ki  =  kb;
    ::SendInput(1,&Input,sizeof(Input));
}

我用它像:

browserHandle = CWnd::FindWindow(NULL, "MyTitle - <insert browser name here>");
browserHandle->SetForegroundWindow();
GenerateKey(VK_F5, FALSE);

我认为这是一种非常不稳定的方法,而且非常难以预测。我知道这种方法会无法预测地失败,因为用户可能在文本编辑器中快速键入内容并且F5密钥生成可能永远不会到达我的浏览器窗口。

基本上我需要:

  1. 首先在用户事件A上显示HTML文件。
  2. 再次关注用户事件A,修改HTML文件。
  3. 如果文件已经显示,只需刷新窗口即可。
  4. 有没有winapi可以帮我这么做?我需要尊重用户首选项,如默认关联,标签行为等。我查看了IWebBrowser2 interface但是没有太深刻印象,因为它似乎只支持Internet Explorer。

    有人可以告诉我一个更好的方法吗?

0 个答案:

没有答案