不通过注册表使用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 ;
FuncDllGetClassObject func=(FuncDllGetClassObject)::GetProcAddress(h,"DllGetClassObject");
if(func==NULL)return ;
IClassFactory *pFactory=NULL;
func(__uuidof ( ScriptControl ),IID_IClassFactory,(void**)&pFactory);
if(pFactory==NULL)return ;
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[]=0X8f;
id.Data4[]=0Xf2;
id.Data4[]=0X00;
id.Data4[]=0Xa0;
id.Data4[]=0Xd1;
id.Data4[]=0X00;
id.Data4[]=0X38;
id.Data4[]=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 ;
}
catch(...)
{
//::FreeLibrary(h);
::CoUninitialize();
}
}
不通过注册表使用ActiveX对象的更多相关文章
- VB - 修改注册表
Vbs中修改注册表的语句主要有: 1.读注册表的关键词和值: 可以通过把关键词的完整路径传递给wshshell对象的regread方法.例如: set ws=wscript.createobject( ...
- ArcGIS AddIN开发之COM对象写入注册表
做一个交互式绘制文字的工具,希望这次设置的Symbol,下次打开ArcMap时自动调用这个Symbol,并支持对其进行修改. 解决方法是将这个Symbol写入注册表中,每次自动读取上一次设置的Symb ...
- c#注册表对象映射
用于快捷保存与读取注册表,为对应的对象 示例 [RegistryRoot(Name = "superAcxxxxx")] public class Abc : IRegistry ...
- 修改注册表添加IE信任站点及启用Activex控件
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/In ...
- IE 内使用ActiveX,写注册表被重定向到如下注册表
IE 内使用ActiveX,写注册表被重定向到如下注册表,所以使用注册表做标记要注意下,目前还没找为什么会这样 HKEY_CURRENT_USER\Software\Microsoft\Interne ...
- WPS显示无法创建对象,请确认对象已在系统注册表中注册
第一种方法:在系统的开始--所有程序找到WPS--WPS office工具--配置工具--高级--兼容设置,在这里勾选兼容第三方系统和软件. 第二种方法: xp/win7系统:拷贝packager.e ...
- C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- [荐]使用Js操作注册表
使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
随机推荐
- .Net平台下实例类型无法转换成接口类型?
首先这种情况出现在应用程序启动前的方法里面. 本想通过发射来实现一些功能.谁知道被这个坑了. 碰到这种问题.已经相当无语了.同时也不知道该如何解决.望有能之士帮忙解答 using System; us ...
- JPA映射持久化对象(Entity)
推荐阅读:JPA criteria 查询:类型安全与面向对象 来源: http://blog.sina.com.cn/s/blog_49fd52cf0100rzjn.html 一个普通的POJO类通过 ...
- NOIP模拟5
期望得分:100+100+100=300 实际得分:72+12+0=84 T1 [CQOI2009]中位数图 令c[i]表示前i个数中,比d大的数与比d小的数的差,那么如果c[l]=c[r],则[l ...
- 【CodeForces】671 C. Ultimate Weirdness of an Array
[题目]C. Ultimate Weirdness of an Array [题意]给定长度为n的正整数序列,定义一个序列的价值为max(gcd(ai,aj)),1<=i<j<=n, ...
- cms替换主页
cms替换主页的步骤 1.先做好静态页面: 2.在D:\wamp\www\phpcms\install_package\phpcms\templates文件夹下建新的文件夹tianqiwangluo( ...
- 解决ajax chrome禁止本地浏览时加载本地其他文件的方法
在chrome快捷键右键--属性 “ --allow-file-access-from-files ”,前面用空格隔开.然后应用--确定.
- 基于canvas的图片编辑合成器
在我们日常的前端开发中,经常会要给服务器上传图片,但是局限很大,图片只能是已有的,假设我想把多张图片合成一张上传就需要借助图片编辑器了,但是现在我们有了canvas合成就简单多了 首先我们看图片编辑器 ...
- Java线上应用故障之CPU占用高排查与定位
最近线上频繁报警CPU空闲不足,故紧急排查后分享给大家 1.使用top命令,获取占用CPU最高的进程号 2.查看线程号对应的进程信息 命令:ps -ef|grep 22630 3.查看进程对应的线程信 ...
- WebHeaderCollection类
.net添加http报头 string[] allKeys = WebHeaderCollection.AllKeys; for (int i = 0; i < allKeys.Length; ...
- springMVC中ajax的实现
function addDebtResult(){ var repayIds=$("#repayIds").val(); var lateFeeDay=$("#repay ...