ATL/COM/ACTIVEX
文章平均质量分 75
Gary@Tokyo
努力生活!
爱好:登山、游泳
If you dont aim high, you will never hit high.
展开
-
ActiveX组件与JavaScript交互
1.在COM组件中调用JavaScript函数// 连接点方式页面javascript脚本<object classid="CLSID:B568F111-DFE4-4944-B67F-0728AB2AB30F" id="testCom" VIEWASTEXT> alert("State(" + s + ")"); return 123;转载 2010-04-26 19:52:00 · 1001 阅读 · 0 评论 -
VS2008环境下,C++生成Dll文件 C++调用Dll文件(非MFC)
<br />生成Dll文件<br />新建项目,选择Win32项目,工程名:09DllDemo 确定后,选择应用程序设置, 应用程序类型选择DLL(D),附加选项上选择 导出符号(X)(便于学习)。单击完成,完成工程创建。<br />-----------------------------------------------------------------------------------------------------------------<br />打开 09DllDemo.c转载 2010-06-03 15:21:00 · 4085 阅读 · 0 评论 -
如何解决VC中的警告warning C4251 needs to have dll-interface
<br />原文地址:http://hi.baidu.com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/a69368fa45782715a9d311c1.html<br /> <br /> <br />这通常是由于以数据成员方式在DLL导出类中使用了模板类造成的。比如:<br />#include <iostream><br />#include <vector><br />using namespace std;<br /><br />class转载 2010-06-04 20:16:00 · 2987 阅读 · 0 评论 -
编译DLL时"error LNK2005: _DllMain@12 already defined"错误
编译出现如下错误nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in QQInfo.objnafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in QQInfo.obj; second definition ignored Creating library Debug/QQInfo.lib and obje原创 2010-06-04 10:48:00 · 3398 阅读 · 2 评论 -
__declspec(dllimport)和__declspec(dllexport)的区别,以及有关c/c++调用约定
<br />DLL可以使用两种方法将公共符号导入到应用程序中或从 DLL 导出函数: <br />生成 DLL 时使用模块定义 (.DEF) 文件。 <br />在主应用程序的函数定义中使用 __declspec(dllimport) 或 __declspec(dllexport) 关键字。 <br />使用 .DEF 文件<br />模块定义 (.DEF) 文件是包含一个或多个描述各种 DLL 属性的 Module 语句的文本文件。如果不使用 __declspec转载 2010-06-03 16:08:00 · 771 阅读 · 0 评论 -
vs2008 warning C4251
要将一个class封装成dll,遇到warning C4251: class 'std::vector' needs to have dll-interface to be used by clients o...,在网上查到这个,解决问题,非常详细。转自:http://www.unknownroad.com/rtfm/VisualStudio/warningC4251.html I always try to get rid of compiler warnings. It just see原创 2010-06-07 09:07:00 · 2743 阅读 · 0 评论 -
DLL注入程序的一般步骤
<br /><br />(1)取得宿主进程(即要注入木马的进程)的进程ID dwRemoteProcessId;<br /><br />(2)取得DLL的完全路径,并将其转换为宽字符模式pszLibFileName;<br /><br />(3)利用Windows API OpenProcess打开宿主进程,应该开启下列选项:<br /><br />a.PROCESS_CREATE_THREAD:允许在宿主进程中创建线程;<br /><br />b.PROCESS_VM_OPER原创 2010-06-07 13:59:00 · 1040 阅读 · 0 评论 -
KitKat - The Lazy/Poor Man's Rootkit
<br />原帖:http://www.codeproject.com/KB/threads/Kitkat.aspx<br /> A Very Simple pseudo-RootKit<br /><br />Download Kitkat - 3.89 KBDownload DllTester - 2.51 KBIntroduction<br />The Following Article is About Using Global Hooks and Window Subclassing to cr原创 2010-08-04 16:24:00 · 1485 阅读 · 0 评论 -
__declspec(dllimport)和__declspec(dllexport)的区别,以及有关c/c++调用约定
DLL可以使用两种方法将公共符号导入到应用程序中或从 DLL 导出函数: 生成 DLL 时使用模块定义 (.DEF) 文件。 在主应用程序的函数定义中使用 __declspec(dllimport) 或 __declspec(dllexport) 关键字。 使用 .DEF 文件模块定义 (.DEF) 文件是包含一个或多个描述各种 DLL 属性的 Module 语句的文本文件。如果不使用 __declspec(dllimport) 或 __declspec(dllexport) 导出转载 2010-09-29 10:13:00 · 781 阅读 · 0 评论 -
extern "c" __declspec(dllexport) __declspec(dllimport)
<br />extern "C" __declspec(dllexport) __declspec(dllimport)都是用于函数或者变量,甚至类的声明的(可以把extern "C"放在class的前面,但是编译器会忽略掉,最后产生的还是C++修饰符,而不是C修饰符)这样的用法有个好处就是下面的代码可以在混有类的函数和变量上使用下面的宏,虽然对类不起作用:#ifdef __cplusplus<br />extern "C"<br />{<br />//函数声明<br />//变量声明,变量转载 2010-10-19 10:53:00 · 5068 阅读 · 2 评论 -
关于STL/ATL/WTL之间的区别
<br />在这之前我一直在使用MFC框架,现在要学习WTL似乎有些牵强......<br />俗话说得好:“工欲善其事,必先利其器”,还是先将基本术语搞清楚吧!<br />1、STL 即 Standard Template Library <br /> STL(标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、 Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C+ +中,但在被引入C++之前该转载 2010-11-11 13:36:00 · 2601 阅读 · 0 评论 -
慎用USES_CONVERSION
<br />USES_CONVERSION是ATL中的一个宏定义。用于编码转换(用的比较多的是CString向LPCWSTR转换)。在ATL下使用要包含头文件#include"atlconv.h"<br />使用USES_CONVERSION一定要小心,它们从堆栈上分配内存,直到调用它的函数返回,该内存不会被释放。如果在一个循环中,这个宏被反复调用几万次,将不可避免的产生stackoverflow。<br />解决方法是:将用到该宏的语句独立封装成一个函数,这样就可以无限次调用了。<br /转载 2011-01-20 13:47:00 · 1511 阅读 · 0 评论 -
让普通C++类轻松支持IDispatch自动化接口
<br />熟悉MFC和ATL/WTL的人一定都很熟悉它们的消息映射表,利用宏进行填表是一种非常简洁非常优雅的编码方式,通俗易懂维护方便。<br /><br /> 对于宏来说,使用越是简单,其内部构造就越复杂。很多人都说MFC把宏定义运用到了极致,以前我同意,现在有所保留,为什么?因为MFC的框架太古老了,它使用的也是早期的宏特性。社会在发展,技术在进步,如今的标准已经对宏的特性进行了扩展。充分利用扩展的宏特性,能制作出更加简洁的代码。<br /> 说了很多废话,言归正传。转载 2011-02-15 16:33:00 · 5480 阅读 · 3 评论 -
DLL的远程注入及卸载技术详解
DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个DLL就不会在内存中卸载,用户也就无法在资源管理器中删除这个DLL文件,真可谓一转载 2011-11-30 13:27:37 · 3816 阅读 · 0 评论 -
解析dll文件和 lib文件的区别(如何利用VC创建DLL文件)
<br />.dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。<br /><br /> .lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用lib文件,就必须:<br />1. 包含一个对应的头文件转载 2010-06-03 12:49:00 · 1156 阅读 · 0 评论 -
深入浅出Dll( 函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法) 所有代码均经过测试,如有问题可留言一。简单的dll函数调用有两种方式: 1。显式调用2。隐式调用.如下例子//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// dlltest.cpp : Dll 撰写//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx转载 2010-06-03 11:06:00 · 809 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(三)
<br />4.5 __stdcall约定<br /><br /> 如果通过VC++编写的DLL欲被其他语言编写的程序调用,应将函数的调用方式声明为__stdcall方式,WINAPI都采用这种方式,而C/C++缺省的调用方式却为__cdecl。__stdcall方式与__cdecl对函数名最终生成符号的方式不同。若采用C编译方式(在C++中需将函数声明为extern "C"),__stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_functionnam转载 2010-06-03 11:04:00 · 608 阅读 · 0 评论 -
ATL与JavaScript交互
原帖地址:http://www.followman.com/bbs/Topic-B11-T262.aspx JavaScript动态响应ATL事件相关讨论:http://topic.csdn.net/t/20061012/21/5078729.html重点:脚本传过来的对象是IDispatch接口,应该用IDispatch::Invoke来调用。如果传过来的转载 2010-04-26 19:55:00 · 2317 阅读 · 0 评论 -
JavaScript Calls from C++
最近要用到相关技术,先贴在这,有空再翻页。本文转自:http://www.codeguru.com/Cpp/I-N/ieprogram/article.php/c4399 http://www.codeguru.com/cpp/i-n/ieprogram/article.php/c4399/JavaScript-Calls-from-C.htm http://www.codeproje翻译 2010-04-27 09:43:00 · 1481 阅读 · 0 评论 -
Re: CHtmlView document returnValue
本文是在C++取得JavaScript的返回值使用,与之前的《JavaScript call from C++》(C++调用JavaScript)相反,<span style="font-family: arial black,avant garde;">JavaScript call from C++是在C++中将值传给JavaScript使用。翻译 2010-04-27 17:05:00 · 1413 阅读 · 0 评论 -
利用MFC实现浏览器的定制与扩展(JavaScript与C++交互)
原文地址:http://www.vckbase.com/document/viewdoc/?id=1486 浏览器的定制与扩展 作者:李汉鹏下载源代码 本文分如下章节:前言在MFC中使用浏览器怎样扩展或定制浏览器定制鼠标右键弹出出菜单实现脚本扩展(很重要的external接口)C++代码中转载 2010-04-28 10:42:00 · 6529 阅读 · 0 评论 -
在JavaScript 调用C++
方案一: // html & JavaScript... <button value="Click me" onclick="window.navigate(app:command&arg1=1&arg2=2)" /> ... // C++: 响应 的消息函数OnBeforeNavigat2转载 2010-04-28 13:28:00 · 4365 阅读 · 0 评论 -
warning C4273 And LNK4049:
<br />//DownNet.h#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#ifdef DOWNNET_DLL#pragma message (" export DownNet ")#define DownAPI __declspec(dllexport)#else#pragma message (" import DownNet ")#define DownAPI __declspec(dl原创 2010-07-05 11:52:00 · 2475 阅读 · 0 评论 -
用DEF文件从DLL中导出C编程++类
<br />用DEF从DLL导出一个参数,或用__deClspeC(dlleXPort)指令从DLL中导出一类,想必大家已经很熟悉了,也经常使用着。这里向大家介绍一种用DEF文档从DLL导出一个类的method。具体原理或为什么就不废话了,学会导出后,再慢慢回味吧。这里主要叙述操作步骤。<br /> 1.打开VC6.0,新建一个"Win32 DynamiC-Link Library"工程,假设叫DefClass,在“Dll kind”选择界面中选择“A simple dll projeCt”<转载 2010-07-06 15:24:00 · 985 阅读 · 0 评论 -
DLL导出类的问题
<br />DLL动态链接库是程序复用的重要方式,DLL可以导出函数,使函数被多个程序复用,DLL中的函数实现可以被修改而无需重新编译和连接使用该DLL的应用程序。作为一名面向对象的程序员,希望DLL可以导出类,以便在类的层次上实现复用。所幸的是,DLL确实也可以导出类。<br /><br />然而事实却没这么简单,导出类的DLL在维护和修改时有很多地方必需很小心,增加成员变量、修改导出类的基类等操作都可能导致意想不到的后果,也许用户更新了最新版本的DLL库后,应用程序就再也不能工作了。这就是著名的转载 2010-07-06 15:19:00 · 841 阅读 · 0 评论 -
DLL中导出函数的两种方式(dllexport与.def文件
<br />DLL中导出函数的声明有两种方式:<br />一种方式是:在函数声明中加上__declspec(dllexport);<br />另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。<br />方式一:在函数声明中加上__declspec(dllexport)<br />///在动态链接库程序中<br />/// 声明动态链接库(**.dll)的对外接口函数TestFuction<br />extern转载 2010-07-06 15:22:00 · 975 阅读 · 0 评论 -
warning c4273: inconsistent dll linkage
编译时候,在release版本下发现以下警告,看到警告总是不舒服的,于是在网上搜索,解决方案: warning C4273: 'DownloadGameFile' : inconsistent dll linkage. dllexport assumed.: warning C4273: 'StopDownload' : inconsistent dll linkage. dllexport assumed.源代码涉及的地方如下:#ifdef DOWNLOAD_EXPORTS#define DO原创 2010-07-12 15:05:00 · 4645 阅读 · 1 评论 -
VS2008 中 ATL CLR MFC Win32 区别
<br />ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用MFC,使用API函数编的程序。MFC、ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用。当然关于C++开发的库不止这3个,不过这3个是微软推荐。从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR.WIN32 winAPI MFC MFC类库 CLR .net库<br /><br />1转载 2010-06-03 10:58:00 · 2632 阅读 · 1 评论 -
VC++动态链接库(DLL)编程深入浅出(一)
4.非MFC DLL<br /><br />4.1一个简单的DLL<br /><br /> 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数。<br /><br /> 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单击此处下载本工程附件)。注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是第5、6节要讲述的M转载 2010-06-03 11:02:00 · 582 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(二)
4.2 声明导出函数 DLL中导出函数的声明有两种方式:一种为4.1节例子中给出的在函数声明中加上__declspec(dllexport),这里不再举例说明;另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。 下面的代码演示了怎样同.def文件将函数add声明为DLL导出函数(需在dllTest工程中添加lib.def文件):; lib.def : 导出DLL函数LIBRARY dllTestEXPORT转载 2010-06-03 11:02:00 · 703 阅读 · 0 评论 -
C++ DLL远程注入与卸载函数
代码是别处的第一个函数是成功的,第二个函数运行发现会将目标程序挂死,也许是目标程序有保护机制支持Unicode编码。 //----------------------------------------------------------------------------------------------------------- // 函数:原创 2011-11-30 14:52:28 · 6343 阅读 · 2 评论