⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cwdw.cpp

📁 在程序中加入脚本支持
💻 CPP
字号:
// function to call "window.document.write("Hello")" on
// a script host application
HRESULT CallWindowDocumentWrite(IActiveScriptSite *pass)
{
// Get dispatch interface for window from host application
  IUnknown *punkWindow = 0;
  HRESULT hr = pass->GetItemInfo(OLESTR("window"), SCRIPTINFO_IUNKNOWN,
                                 &punkWindow, 0);
  if (FAILED(hr)) return hr;
  IDispatch *pdWindow = 0;
  hr = punkWindow->QueryInterface(IID_IDispatch, (void**)&pdWindow);
  punkWindow->Release();
  if (FAILED(hr)) return hr;

// get dispatch interface for window.document
  OLECHAR *rgszNames[] = { OLESTR("document") };
  DISPID id;
  hr = pdWindow->GetIDsOfNames(IID_NULL, rgszNames, 1, 0, &id);
  if (SUCCEEDED(hr))
  {
    IDispatch *pdDocument = 0;
    VARIANT varResult; ZeroMemory(&varResult, sizeof(varResult));
    DISPPARAMS dp = {0, 0, 0, 0};
    hr = pdWindow->Invoke(id, IID_NULL, 0, DISPATCH_PROPERTYGET,
                          &dp, &varResult, 0, 0);
    if (SUCCEEDED(hr))
    {
        assert(varResult.vt == VT_UNKNOWN || varResult.vt == VT_DISPATCH);
        hr = varResult.punkVal->QueryInterface(IID_IDispatch, 
                                               (void**)&pdDocument);
        VariantClear(&varResult);
    }

// call window.document.write("Hello") (pdDocument == window.document)
    if (SUCCEEDED(hr))
    {
// look up write method
        rgszNames[0] = OLESTR("write");
        hr = pdDocument->GetIDsOfNames(IID_NULL, rgszNames, 1, 0, &id);
        if (SUCCEEDED(hr))
        {
// execute write method
          VARIANTARG arg; ZeroMemory(&arg, sizeof(arg));
          arg.vt = VT_BSTR; arg.bstrVal = SysAllocString(OLESTR("Hello"));
          DISPPARAMS dp = {&arg, 0, 1, 0};
          hr = pdWindow->Invoke(id, IID_NULL, 0, DISPATCH_METHOD,
                                &dp, 0, 0, 0);
          VariantClear(&arg);
        }
        pdDocument->Release();
    }
  }
  pdWindow->Release();
  return hr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -