Quantcast
Channel: VC++
Browsing latest articles
Browse All 100 View Live

编写插件锁住Word文档窗口 - API和COM接口Hook综合演示

现在的木马后门种类非常之多,其中有些木马专门以Office 文档为窃取目标 ,我最近做了一些Anti这些木马的工作,在工作中我基本上实现了阻止未知程序 利用Office自动化接口窃取Word内容,但限于公司利益我只能写一些基本上已经 比较成熟和公开的技术,当然其

View Article



编写在浏览器中不弹出警告的ActiveX控件

我们在编写ActiveX控件时,如果用在浏览器中,经常都会弹出现在运行的脚 本不安全的提示, 如果给客户使用,将会带来极大不便。按照MSDN的介绍通常 有两种一种是实现IObjectSafe接口,一种是通过修改注册表的方法。一般如果 用ATL开发ActiveX控件,就用实现O

View Article

SetForegroundWindow及类保护

1、列表视图模式 2、SetForegroundWindow 3、类保护 我试图使用C++/MFC自定义文件打开对话框。是否有一种办法能在打开/保存对话 框启动时改变列表视图的类型?启动时默认的是列表视图, 这个视图没什么用 。我希望程序启动对话框时采用详细资料视图,或最好

View Article

NT环境下进程隐藏的实现

在NT环境下隐藏进程,也就是说在用户不知情的条件下,执行自己的代码的 方法有很多种,比如说使用注册表插入DLL,使用Windows挂钩等等。其中比较有 代表性的是Jeffrey Richer在《Windows核心编程》中介绍的LoadLibrary方法和 罗云彬在《windows环境下32位汇

View Article

NT环境下进程隐藏的实现 (2)

位是否为1。IMAGE_IMPORT_BY_NAME结构定义如下: //摘自WINNT.H typedef struct _IMAGE_IMPORT_BY_NAME { WORD Hint; BYTE Name[1]; } IMAGE_IMPORT_BY_NAME; 其中Hint字段的内容是可选的,如果它不是0,则它也表示函数的序号,我们 编程是不必考虑它。虽然

View Article


如何用Win32 APIs枚举应用程序窗口和进程

摘要 我们在编写程序时,常常遇到的一件事情就是要准确列出系统中所有正在运行的程序或者进程。Windows 任务管理器就是这样的一个程序。它既能列出运行的桌面应用程序,又能列出系统中所有运行的进程。那么,我们在程序中如何实现这样的任务呢?本文下面将详

View Article

如何在Windows NT、Windows 2000和Windows XP中使用VDMDBG函数

摘要 即使是在 32位环境中编写程序,也经常碰到处理 16位应用程序的情况。在 Windows NT 中,16位程序是运行在虚拟 DOS 机(VDM)中的。VDMDBG.dll 包含许多处理16位程序的有用函数,这个库是 Platform SDK 的一部分。 VDMDBG 中的函数提供了很好的方式在 VD

View Article

mschart示例

程序运行效果图 一、在工程中加入 mschart 菜单-Project-Add To Project-Components and Controls- Registered ActiveX Controls-Microsoft Chart Control, version 6.0 (OLEDB) 二、在CDemoView中加入:CMSChart m_Chart 三、创建及设置m_Chart 3.1...

View Article


如何实现快捷方式中的查找目标功能

最近写一个开发辅助工具,在这个过程要做一个类似文件快捷方式中查找目 标的功能,先查MSDN98,大家不要见笑,我现在一直都用它,没有相应的API, 后又. Net 2003中的MSDN,找到了可以实现该功能的API, SHOpenFolderAndSelectItems()函数,它的原型如下:

View Article


如何实现快捷方式中的查找目标功能 (2)

原文出处:吾吾织梦WwW.55ZM.CoM

View Article

如何在MSWord中加入MSAgent

在每天的工作中使用Word是必须的工作,在使用MSWord的时候,使用帮助能 帮助我们省下不少的时间,可是每天使用Word的时候都是对着限定的几个 Assistant, 感觉有点闷 ,当我在网上看到微软推出的MSAgent技术时,我想, 为何不可以有这些角色用到MSWord中去呢

View Article

MFC Activex录音机控件

上一次的程序演示了怎样做一个录音机的程序,不过我的主要目的是要做一个能嵌入网、Director、authorware 等应用软件的ActiveX 控件,下面就来看以下基本实现方法。 程序运行结果如下: 图一 为简单起见,本控件没有设置接口、属性、方法等等,基本的程序思

View Article

ATL布幔之下的秘密(5)

介绍 很多人认为ATL只是用来编写COM组件的,其实你也可以使用ATL 中的窗口类来创建基于窗口的应用程序。虽然你可以将基于MFC的程序转换为ATL ,但是ATL中对于UI(译注:用户界面)组件的支持太少了。所以,这就要求你 需要自己编写很多代码。例如,在ATL中没

View Article


ATL布幔之下的秘密(4)

介绍 到现在为止,我们还没有讨论过任何有关汇编语言的东西。但是 如果我们真的要了解ATL底层内幕的话,就不能回避这一话题,因为ATL使用了一 些底层的技术以及一些内联汇编语言来使它更小巧快速。在这里,我假设读者已 经拥有了汇编语言的基础知识,所以我

View Article

ATL布幔之下的秘密(4) (2)

编译器生成的fun函数代码是类似 于这个样子: _asm ret 这就意味着在这个函数中没有prolog代码 和epilog代码。事实上,naked函数有一些规则,也就是你不能在naked函数中定 义自动变量。因为如果你这么做的话,编译器就需要为你产生代码,而naked函 数中编译

View Article


ATL布幔之下的秘密(3)

介绍 如果你是个模板的高手,你就可以将ATL的学习作为一种享受。 在这一节中,我将要尝试解释一些ATL使用的模板技术。我不能保证你读完本节 后能成为一个模板高手,只能是尽我所能让你在读完本文后能够更轻松地理解 ATL的源码。 程序35. #include iostream u

View Article

ATL布幔之下的秘密(3) (2)

b ? a : b; } template char* Maximum(char* a, char* b) { return strlen(a) strlen(b) ? a : b; } int main() { cout Maximum (Pakistan, Karachi) endl; return 0; } 至于类模板,也可以用相同的办法进行特化。 程序44. #include...

View Article


ATL布幔之下的秘密(3) (3)

BaseDrive2 { public: void fun() { cout Drive2::fun endl; } }; int main() { BaseDrive1* pBase = NULL; pBase = new Drive1; pBase-doSomething(); delete pBase; pBase = new Drive2; pBase-doSomething();...

View Article

ATL布幔之下的秘密(2)

介绍 在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所 使用的技术,这是本系列的第二篇文章。 现在让我们来探究一些虚函数 背后更加有趣的资料。为了和上文保持一致,在本文的讨论中我将使用相同的顺 序,程序的序号从20开始。 让我们看看下面这个

View Article

ATL布幔之下的秘密(2) (2)

(int*)*((int*)*(int*)this+2) endl; cout endl; } virtual void f1() { cout Base::f1 endl; } virtual void f2() { cout Base::f2 endl; } }; class Drive : public Base { public: Drive() { cout In Drive endl;...

View Article

ATL布幔之下的秘密(2) (3)

有纯虚函数的类,并且一个接口是继承自另一个接口的,只有实现类才会重写接 口的纯虚函数。这样一来,每个基类的构造函数就会以相同的值来初始化它们自 己的虚函数表入口。所以,这就意味着相同的代码会反复重复下去。 ATL 的主要思想就是让COM组件尽可能的

View Article


ATL布幔之下的秘密(1)

介绍 在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所 使用的技术。 在讨论的开始,让我们先看看一个程序的内存分布。首先 ,编写一个简单的程序,它没有任何的数据成员,你可以看看它的内存结构。 程序1. #include iostream using namespace std;

View Article


ATL布幔之下的秘密(1) (2)

Address of virtual pointer (int*)(lt; endl; cout Value at virtual pointer i.e. Address of virtual table (int*)*(int*)(lt; endl; cout endl Information about VTable endl endl; cout Value at 1st entry of...

View Article

ATL布幔之下的秘密(1) (3)

main() { Drive d; void* pVoid = NULL; // 调用Base1的函数 pVoid = (char*) ((Base1*)(pVoid))-f(); // 调用Base2的函数 pVoid = (char*) ((Base2*)(pVoid))-f(); // 调用Base3的函数( 译注:原文为Base1) pVoid = (char*)...

View Article

构建仪表、图表控件的绘制框架

开发环境: VS2003 + Windows XP SP2 测试环境: Windows XP SP2 Demo截图 编写图形相关的控件需要完成两部分:1 绘制;2 与窗口类(泛指)集 成使之成为控件。本文重点在于“绘制”部分,提出一个较灵活的框 架。用VC的GDI+实现框架,并在Demo中简单封装成

View Article


Office 2000下内部COM插件的编程实现

简介 你也许曾在Office2000下的Word2000、Access2000、Excel2000、PowerPoint2000等软件中的工具条或菜单条资源中,看到一些其它软件加入的新的自定义工具条按钮或菜单条,当点击它们时,会有其不同的响应发生。下面,让我们也来实现这些功能,需要说明的是

View Article

Office 2000下内部COM插件的编程实现 (2)

// 用CommandBarControls中的Add方法新增第二个按钮,并让spNewBar2指向它 spNewBar2 = spBarControls-Add(vToolBarType, vEmpty, vEmpty, vEmpty, vShow); ATLASSERT(spNewBar2); // 为每一个按钮指定_CommandBarButton接口,从面可以指定按钮的显示风格等

View Article

VC MFC专题

手势 - MFC 任务栏 - MFC 功能区 - MFC 多点触控 - MFC MFC中自定义窗口类名 基于MFC的OpenGL编程 - 目录 如何使用MFC和类型库创建自动化项目 在MFC中创建动态控件的生成与响应 VC中利用MFC设计绘图程序初步 关于MFC内部结构实用的一点看法 深入分析MFC中的C

View Article

VC ATL专题

ATL的GUI程序设计(前言) ATL的GUI程序设计(2) ATL的GUI程序设计(1) ATL/COM简单工程 ATL COM和ADO VC++与MATLAB混合编程及其应用 MATLAB与VC++混合编程实现一维小波多尺度分解. 基于VC++中ATL创建ActiveX控件的探讨 精通VC与MATLAB联合编程十――综合举例二

View Article



如何在NT下获取进程的路径(增补)

一、程序说明 最近整理文档,发现以前写的《如何在NT下获取进程的路径》一文中还有个问题没有解决:原文中的程序无法获取系统进程的路径,如:csrss.exe。记得VCKBASE上有位网友说过一个方法:“给枚举的进程增加SE_DEBUG_NAME权限即可”,于是在网上找了些

View Article

如何在NT下获取进程的路径

一:获取NT下进程路径的方法 在Win9X系统中,利用ToolHelp API中的相关函数可以很方便得得到进程的名称及其路径。但这种方法在NT系统中就不能奏效了,szExeFile仅仅得到的是进程的名称,并没有包含进程的路径。 如何在NT下获取进程的路径呢?(由于WIN9X系统

View Article

曲线显示控件

不少应用程序都需要将一些数据曲线化显示,以观察数据的变化趋势,我们常用的曲线控件有不少,比如mschart,最近公司也需要一个曲线显示的东东,但是不能使用mschart,怎么办?自己做嘛,工具当然是Visual C++,语言MFC。首先我研究了一下mschart和一些网站

View Article

如何使用<fstream>类进行文件的I/O处理

摘要:传统的文件 I/O 库如 Unix 的 io.h 和 stdio.h ,由于其程序接口的原因,在很大程度上强制程序员进行某些处理,缺乏类型安全和国际化支持。C++ 的 fstream 库则在文件的 I/O 方面提供了一个增强的、面向对象的、具有国际化意识的库。本文将介绍如何使

View Article


让你的程序也能执行脚本

VBScript(JScript)是应用广泛,简单易学的脚本语言。使用VBScript(JScript)调用COM组件则更是容易。那么,如果在你的程序中也能够执行脚本,则在简化程序设计的基础上,还会极大地提升软件的功能。为了方便大家使用这个功能,我写了一个具有自动化(Auto

View Article

If-Trader 订单流程系统

简介 这是一个原应用程序建构在 IIS 6.0、COM 1.5、MSMQ 3.0的网络订单处理系统,利用Application Server 的新增功能,在对源代码作稍许修改的情况下,对应用程序进行扩展,使之成为具有分单及自动化审核的新程序架构,真正达到“Do more with less”。 首先

View Article

If-Trader 订单流程系统 (2)

组件服务 我的电脑 按 [右键] [属性] 选择 [选项] 标签页,选中 [启用分隔] 按 [确定] 。 主控台根目录 组件服务 我的电脑 COM 分区 按 [右键] [新增] [分区] [下一步] 。 按 [建立一个空的分区] 在 [名称] 中输入 COMPart2 [下一步] [完成]。 7.指定 COM 分

View Article


IE中关于半透明和透明控件的一些说明

一、大家在有些时候希望自己做的控件是半透明或透明的,就像半透明的窗体一样,我经过一段时间的查询,发现这个是可以实现,我们来看看它的实现以及带来的一些问题吧。首先:制作控件的时候需要无窗口支持,也就是说控件不需要窗口。如果控件有窗口,那么我

View Article


IE控件一些高级使用方法

本文介绍如下内容 1、如何显示内存中的 HTML 网页; 2、如何屏蔽掉鼠标右键的上下文菜单; 3、如何扩展 HTML 中的脚本(external)对象; 4、如何显示 HTML 样式的对话窗; 5、如何执行 HTML 脚本; 一、如何显示内存中的 HTML 网页 或者因为网页保密的考虑;

View Article

IE控件一些高级使用方法 (2)

没有安装 MS WORD) else wordapp.visible = true ''''显示WORD界面 wordapp.Documents.Add ,false, 0 ''''新增一个空文档 wordapp.Selection.TypeText window.dialogArguments ''''键入传递进来的文本 end if window.close '''' 关闭 六、结束语 好好学习

View Article

GIS相关技术之一:Symbol编辑器

前言 随着信息技术日新月异的高速发展,GIS技术也随之产生,为地理信息管理开创了新的模式。它的应用越来越广泛。当然这都不是本文讨论的东东!! 介绍 本文涉及的Symbol来源于ArcGis,所以只针对对GIS有一定经验的朋友与我共同学习。主要参照ArcGis--ArcObj

View Article

Excel2000/XP和PowerPoint2000/XP内部COM插件的实现

一、简介 Excel2000和PowerPoint2000下内部COM插件的编程实现这篇文章,实际上是 Office2000下内部COM插件的编程实现 和 Word2000/XP中内部COM插件的编程实现二篇文章的续篇。采用上篇文章 Word2000/XP中内部COM插件的编程实现中写作风格,不再重复哆嗦大部

View Article


DOM应用 - 遍历网页中的元素

一、摘要 在我们编写的程序中,如果想要实现对浏览器打开的网页进行监视、模拟操纵、动态提取用户输入、动态修改......等功能,那么请你抽出宝贵的时间,继续往下阅读。本文介绍的知识和示例程序都是围绕如何遍历 HTML 中的表单(form)并枚举出表单域的属性为

View Article

DataGrid控件用法详解

写在前面 刚写这个题目,就觉得肩上重了,不知道自己能否对DataGrid详解之。希望大家共同指正。DataGrid控件是VC方便地用来显示数据的一个极好的网格控件,我不否认网上还有期它不少优秀的网格控件,但我总喜欢使用微软自已的东西 。除非它满足不了我的需要

View Article


COM技术初探(三):一个真正的COM

一、实现ISmipleMath,IAdvancedMath接口和DllGetClassObject() 1.1 实现ISmipleMath和IAdvancedMath接口 让我们将原来的CMath 类(CMath其实就是COM技术初探(二)COM基础知识里的那个CMath类)修改来实现ISmipleMath接口和IAdvancedMath接口。 修改的地方如

View Article

COM技术初探(三):一个真正的COM (2)

创建组件对象的对象。COM为通用化以及在管理上统一和方便,COM规范要求所有标准COM组件都应实现IClassFactory接口(有关IClassFactory的功能各个方法的作用请参阅MSND/Welcome to the msnd library/msnd resource/selected online columns/Dr.GUI online/Dr.

View Article


COM技术初探(三):一个真正的COM (3)

// 这个标识我们前面没遇到过。 pointer_default(unique) ] interface ISimpleMath : IDispatch { [id(1)] HRESULT Add([in]int nOp1,[in]int nOp2,[out,retval]int * pret); [id(2)] HRESULT Subtract([in]int nOp1,[in]int...

View Article

COM技术初探(三):一个真正的COM (4)

COM方面 (在COM方面除潘爱明的作着可以看看外,国内其他作者的东西都是垃圾。) COM本质论 Don Box (如果没有看过这本书那你的COM就那个样了^_^) COM技术内幕 (比较浅,适合入门) COM原理实现与应用 (潘爱明,本书比较详细讲解了COM的几大核心应用) ATL方面

View Article

COM技术初探(2)

三、纯手工创建一个COM组件 1、从建工程到实现注册 在这一过程中我们将完成三个步骤:创建dll的入口函数,定义接口文件,实现注册功能 1.1创建一个类型为win32 dll工程 创建一个名为MathCOM的win32 dll工程。 在向导的第二步选择A smiple dll project选项

View Article

COM技术初探(2) (2)

nOp1, int nOp2,int * pret); //IAdvancedMath Method STDMETHOD (Factorial)(int nOp,int *pret); STDMETHOD (Fabonacci)(int nOp,int *pret); }; 2) Math.cpp文件 /*@**#---2003-10-29 21:32:35 (tulip)---#**@...

View Article


COM技术初探(2) (3)

::MessageBox(NULL,ok,I''am fine,MB_OK); } BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved) { HANDLE g_hModule; switch(dwReason) { case DLL_PROCESS_ATTACH: g_hModule =...

View Article

Browsing latest articles
Browse All 100 View Live




Latest Images