- 博客(12)
- 资源 (8)
- 收藏
- 关注
原创 IE BHO的IObjectWithSite接口
Internet Explorer的BHO的对象必须实现IObjectWithSite接口.该接口是IE用来对插件进行管理和通讯的一个接口,其有SetSite和GetSite两个方法,当IE加载和卸载Band对象的时候,调用该接口的SetSite方法,我们可以通过SetSite传进来的IUnknown指针来获取我们所需要的接口: 1. 获取IE的框架窗口句柄: HWND hW
2009-03-28 19:20:00
3851
原创 程序实现设置IE主页的功能
IE主页的地址保存注册表中,注册表的具体位置在HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//Main键下的的Start Page的值,通过设置Start Page可以设置IE的主页.Demo代码如下:/* * 设置IE主页 * @Param: lpszUrl 为要设置为主页的URL地址 */
2009-03-28 14:25:00
1197
原创 ATL和MFC的C++类和HWND的映射机制
最近看深入解析ATL这本书的时候看到ATL中的窗口类实现的时候,很是惊异于ATL的Thunk的运用技术,,ATL运用Thunk技术把C++的成员函数置换成Windows窗口的消息处理函数。那么更古老的MFC框架又是怎么实现CWnd类到HWND窗口类之间的映射的呢? 下面的文章将ATL和MFC的窗口封装机制做个对比. 如果让我完成C++类到HWND窗口的映射,我会写如下的代码BOOL
2009-03-27 20:25:00
2025
原创 递归枚举IHTMLDocument2的所有元素
void EnumHTMLDocument( MSHTML::IHTMLDocument2* pDoc ){ if( pDoc == NULL )return; //遍历搜索子框架,递归处理子框架的文档 CComPtr spFramesCollection; pDoc->get_frames( &spFramesCollection ); long lCou
2009-03-23 20:16:00
2990
1
原创 枚举当前环境中打开的所有IE
IE程序是属于Shell的一个应用程序,要枚举当前打开的所有IE程序窗口,可以通过ShellWindows集合来打开属于Shell的当前的窗口的集合.首先添加程序需要的头文件和tlb库 //...#import #import #include //...//定义IE程序处理函数指针typedef void (*ProcessWebBrowser)( co
2009-03-21 15:08:00
1565
原创 封装字符串的Format操作
相信即使再讨厌MFC的朋友也不会把厌恶牵扯到CString类上,而且CString现在也提升为ATL和MFC的共享类。用CString类,当然不能忘记它的Format方法,其用于格式化字符串。示例操作如下:CString strDemo;strDemo.Format( _T("数字为:%d, 字符串为:%s"), 1, strOther ); 很简单的使用.但我总觉得用的
2009-03-20 14:51:00
801
原创 监控文件(夹)的改变
监控文件(夹)是开发中比较常用的功能.Windows API函数FindFirstChangeNotification、FindCloseChangeNotification、FindNextChangeNotification可以实现监控文件夹的改变,但是不能具体指出改变的是哪个文件,自己写程序比较文件?有点舍本逐末了。个人觉得这些函数有些鸡肋。 还好ReadDirector
2009-03-20 14:33:00
819
原创 通过ARP协议获取MAC地址
ARP协议就是用来完成IP地址和MAC地址之间的转换工作,在ARP封包指定待获取MAC地址的局域网内的IP地址,然后发到局域网内,指定IP地址的机器接受到并返回一个ARP封包,并在返回的封包中指定自己的MAC地址。这样就达到了获取MAC的目的。对于本机MAC地址同样可以这样获取。下面是代码实现,为了方便起见,我直接用了SendARP函数,而没有做底层的封装ARP封包。 /**
2009-03-20 09:43:00
5281
原创 动态生成并执行SQL语句
首先用SQL的字符串类型保存SQL语句,如下:DECLARE @strSQL nvarchar(500)SET @strSQL = CREATE VIEW MyView AS SELECT id, name FROM MyTable 执行语
2009-03-12 15:59:00
1021
原创 多继承时基类命名冲突的解决方案
众所周知,C++与其他语言(如C#,JAVA)一个很大的不同就是C++支持从多个类继承。但是多继承经常遇到这样一种情况,如果有两个或多个基类有相同名字和标记的方法,继承类该怎么去实现。如有2个基类,代码如下:class CBaseA{public: virtual ~CBaseA(){} virtual void Init(){}};class CBaseB
2009-02-05 10:51:00
4187
原创 VC从文件中加载图片
用MFC做GDI开发的朋友肯定熟悉CBitmap类,该类封装了HBITMAP对象,简化了关于HBITMAP的API操作,如LoadBitmap方法可直接加载资源中指定ID的图片,但是很多情况下我们需要从文件中加载图片,CBitmap类就没有提供这样的方法了。下面我总结几种我知道的从文件加载图片的方法: 1.使用API函数LoadImage,指定LR_LOADFROMFILE标志。如:
2009-02-05 09:49:00
1704
原创 关于_countof宏的研究
最近浏览代码时,无意间注意到_countof宏,该宏定义在atldef.h头文件里。用于计算一个数组的长度。一般计算数组长度较简单的语句如:sizeof(Array) / sizeof(Array[0])。于是我就好奇_countof宏又是怎么实现的。看完_countof宏的实现,受益匪浅,感觉离证混元又近了一步啊。代码如下:#if !defined(_countof)#if !d
2008-07-24 17:28:00
2365
1
Windows用户态程序高效排错
2010-02-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人