zoukankan      html  css  js  c++  java
  • 不通过注册表使用ActiveX对象

    为了弄清楚COM库的运行原理,特意做了这个实验:

    #include "stdafx.h"
    #include "objbase.h"
    #include "atlcomcli.h"
    #include "limits"
    //#include "commctrl.h"
    #import "msscript.ocx" no_namespace 
    extern "C"{ typedef HRESULT (__stdcall *FuncDllGetClassObject)(REFCLSID rclsid,REFIID riid,LPVOID * ppv);}
    struct IScriptControl;
    int _tmain(int argc, _TCHAR* argv[])
    {
    try
    {
      ::CoInitialize (NULL);
      HMODULE h=::LoadLibrary("msscript.ocx"); 
      if(h==NULL)return 0;
      FuncDllGetClassObject func=(FuncDllGetClassObject)::GetProcAddress(h,"DllGetClassObject");
      if(func==NULL)return 0;
      IClassFactory *pFactory=NULL;
      func(__uuidof ( ScriptControl ),IID_IClassFactory,(void**)&pFactory);
      if(pFactory==NULL)return 0;
      IScriptControl *pScript=NULL;
      //pFactory->QueryInterface(__uuidof(IScriptControl) , (void**)&pScript);
      //0e59f1d3-1fbe-11d0-8ff2-00a0d10038bc
      //IID id;//=__uuidof(IScriptControl);
      IID id;
      id.Data1=0x0e59f1d3;
      id.Data2=0X1fbe; 
      id.Data3=0X11d0;
      id.Data4[0]=0X8f;
      id.Data4[1]=0Xf2;
      id.Data4[2]=0X00;
      id.Data4[3]=0Xa0;
      id.Data4[4]=0Xd1;
      id.Data4[5]=0X00;
      id.Data4[6]=0X38;
      id.Data4[7]=0Xbc;
      //pFactory->CreateInstance(NULL,__uuidof(IScriptControl) , (void**)&pScript);
      pFactory->CreateInstance(NULL,id , (void**)&pScript);
      pFactory->Release();
      pScript->put_AllowUI(VARIANT_FALSE);
      pScript->PutLanguage(L"JScript"); 
      _variant_t v=pScript->Eval("1+2+3+4+5"); 
      int i=pScript->Release();           
      ::FreeLibrary(h); 
      ::CoUninitialize();
      return 0;
    }
    catch(...)
    {
      //::FreeLibrary(h); 
      ::CoUninitialize();
    }
    }
  • 相关阅读:
    poj3277 City Horizon
    60.左值右值以及类型判断
    59.C++与正则表达式
    57.C++处理转义字符
    56.lambda表达式与绑定以及伪函数和绑定
    55.函数模板指针匹配(模板自动匹配*多的)
    54.函数模板默认参数
    53.伪函数与函数绑定器
    52.模板的重载
    51.模板与引用
  • 原文地址:https://www.cnblogs.com/stst/p/4908939.html
Copyright © 2011-2022 走看看