简介
本文用一个简单的sample演示如何在VC++ ATL编写的组件中调用我们熟悉的ASP对象(Request,Response,Session等等)。你会发现在 Visual C++中使用 ATL Object Wizard就可以达到我们的目的。但使用OnStartPage,OnEndPage事件并不是最佳方法。
在IIS3.0中,组件能通过IscriptingContext 接口存取ASP内建对象,但这是通过页面级方法来存取内建对象。现在有了一种更好的实现方法,就是利用ObjectContext对象直接存取。ObjectContext使IIS应用有更好的扩展性,提供更完善的事务处理功能。强烈建议你把原有的应用转换到这种方式,但要求你的应用支持事务处理。
代码
首先需要包含一些必要的库文件。我们需要mtx.h来定义一些常量,通过mtxas.dll得到IobjectContext接口,通过asp.dll得到ASP对象。
#include <mtx.h>
#import "c:Winntsystem32mtsmtxas.dll"
#import "c:Winntsystem32inetsrvasp.dll"
然后,我们调入IobjectContext接口。
MTxAS::ObjectContextPtr pObjectContext;
HRESULT hr = GetObjectContext((IObjectContext**)
&pObjectContext);
下一步,通过context 对象得到我们需要的东西。这里举两个例子:session和response。
//Session Object
CComVariant v;
CComBSTR bstr(L"Session");
CComQIPtr<IGetContextProperties, &__uuidof
(IGetContextProperties)> pProps(pObjectContext);
hr = pProps->GetProperty(bstr, &v);
CComPtr<IDispatch> pDisp;
pDisp = V_DISPATCH(&v);
CComQIPtr<ASPTypeLibrary::ISessionObject, &__uuidof
(ASPTypeLibrary::ISessionObject)> pSession(pDisp);
//Response Object
CComVariant v;
CComBSTR bstr(L"Response");
CComQIPtr<IGetContextProperties, &__uuidof
(IGetContextProperties)> pProps(pObjectContext);
hr = pProps->GetProperty(bstr, &v);
CComPtr<IDispatch> pDisp;
pDisp = V_DISPATCH(&v);
CComQIPtr<ASPTypeLibrary::IResponse, &__uuidof
(ASPTypeLibrary::IResponse)> pResponse(pDisp);
最后来一个使用这个对象得简单例子。
//Retrieve a value from the Session Object.
CComBSTR bstrVarName(L"TestSessionVar");
VARIANT* pValue;
pSession->get_Value(bstrVarName, pValue);
//Write that value out to the browser.
pResponse->Write(pValue);
总结
虽然这只是一个很简单的在VC++编写的组件中调用ASP 内建对象的例子,你可以按这个原理做更多的事情。Good luck。
在VC++ 编写的组件中使用ASP对象
时间: 2024-12-03 00:09:09
在VC++ 编写的组件中使用ASP对象的相关文章
在COM组件中使用ASP内置对象
在一些项目中,通常需要采用C/S&B/S的混合架构来实现,这样就涉及到了Web开发,在MS的.Net没有出现之前,因为是运行于windows环境之上,理所当然的首选ASP来实现了,直到有一天,盖茨扛出了.Net大旗,振臂高呼:用洒家的.Net吧,安全快捷无副作用,一个字"牛B"! ASP经过这么多年的敲敲打打,一些自身难以克服的缺陷也渐渐浮出水面,此时听了他的话,兴奋地一阵小跑马上就.Net了,但几个闪着.Net金色光环的项目出手以后,结果并不尽如人意,于是暂时性的倒退回ASP
利用VC++编写Windows95的CPL组件
控制面板是Windows 95 的控制中心,通过它可以完成添加新硬件设备.改变桌面设置.配置网络协议等多项工作.在Windows 95 中,控制面板通常有20 多个组件,我们只要用鼠标双击任一组件的图标,就会弹出一个对话框,对话框包含有设置一些系统参数的选项,这些参数的绝大多数都存放在Windows 95 的注册表中. ---- 控制面板的主程序是CONTROL.EXE,它在启动时自动Winndows\System 目录下查找并调入文件扩展名为CPL 的控制面板组件.控制面板组件是可以扩充的,一
学习使用ASP对象和组件
对象 ASP对象让你的服务器和浏览器互相影响,你会例行公事的在你的ASP脚本中使用一个或者多个对象.你不用安装任何东西来使用它们,但是你必须要记住打开或者关闭它们. 转自:中国软件网 www.csdn.com.cn ASP组件,和ASP对象不同,它是ActiveX控制和ASP接口让普通进程单一化.一些普通的使用对象和组件就在这个下面定义. 对象 请求对象 请求对象让你的通过一个HTTP请求分接信息.你可以使用请求对象分析编码URLs,从一个表格中访问信息并且读取cookies,客户认证和HTTP
通过VB结构数组输入数据VC编写DLL实现图形文件
前言 太多的例子讲如何如何实现VC编写动态链接库,VB中声明后使用,但没有一个好的文章来深入探讨这个问题,本文负责解决此类问题. 1.一般情况 VB中定义为: Private Declare Function FuncFoo Lib "MyStDll.DLL" _ (ByVal lParam1 As Long, ByVal lParam2 As Long) As Long VC中定义为: UINT WINAPI FuncFoo(UINT lParam1, UINT lParam2);
ASP组件中的安全问题 (转)
安全|问题 Microsoft推出的ASP(Active Server Page)以简单.易用.功能多.可扩充性等强大功能得到了网友和大多数网管的喜爱,大有完全代替CGI的趋势.但是我要对你说,如果使用ASP的话,你网络的安全同时也大大降低了! 在我继续说下去之前,请你完成以下步骤: 1.下载这个文件"http://home.gbsource.net/xuankong/dll.zip",解压缩后把其中的test.dll文件拷贝到"c:\windows\system"
在C#代码中调用C++和VB编写的组件
如果不能和用别的编程语言编写的组件进行交互,这种编程技术的含金量就会大打折扣..NET环境为我们提供了不同编程语言编写的组件之间相互调用的良好机制.只要按照.NET可操控代码的标准来编写组件,对于客户程序来说,调用者的组件是哪种语言编写的都无关紧要,调用的方式实际上没有什么区别. 下面我们先后使用C++.VB和C#编写了自己的组件.这是一个简化的字典组件,字典在构造时没有装载语言库,需要使用LoadLibrary来完成.使用FreeLibrary方法把语言库卸载.属性CurrentLibrary
PHP调用VC编写的COM组件实例_php实例
一.用VC创建COM组件 1.vc新建项目 -> ATL项目,输入名称ComTest,ComTest将作为COM组件的名称. 2.到了ATL项目向导,不需要改动,完成向导.向导完成后,vc将会自动生成一系列的程序. 3.切换到类视图,在ComTest项右键,添加类,选择ATL简单对象, 4.来到ATL简单对象向导,输入你要新建的类名 MyClass,完成向导.(注意了,还要填写ProgID,有些vs会自动补全) 5.回到类视图中,在IMyClass右键,添加方法,将会进入添加方法的向导. 6
接触VC之四:COM组件模型基础
一年又一年,已经又过了一年了.我VC的生涯已经两岁了.可以相当地庆贺一下哟.回顾这一年的学习(唉,还没有工作实践呢.这年头,工作不好找哇.),还学了不少的好东西.其中,最重要的就是COM组件模型,我个人觉得这个几乎是Windows的核心.许多先进的技术(比如微软著名的DirectX,ADO,没有人会不知道吧)都以COM组件的形式发布的.现在,我瞄上了另一个好东东,就是泛型编程技术.它能够编写出清晰.灵活.高度可重用的代码,在ATL中就可以依稀看出它的影子(现在网上ATL文章有很多,我以后也会谈到
Linux操作系统中运行ASP.NET 4
<在openSUSE下ASP.NET 4开发环境配置>中已经配置好了 openSUSE 11.3 操作系统. 现在,我们进入"GNOME 终端",使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址. ben@linux-nyhn:~> /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:51:5B:0B inet