Google Chrome 浏览器历史记录的获取与清除
转:http://blog.csdn.net/itmes/article/details/7594871以前做的一款产品要求能够获取IE浏览器的历史记录,并能够进行彻底删除,当时chrome浏览器、FireFox浏览器都刚刚兴起不久,索性将此功能进行扩展,实现对多浏览器的支持。查找历史记录这种东西,主要就是找到其存储的位置,分析其文件的格式,IE的就不说了,微软有相应的API。Google Chrome浏览器使用小型桌面数据库SQLLite存储其历史记录信息,其实就是一个数据库文件,一些数据库表。那么我们自己编写一个获取chrome历史记录的小工具都需要哪些准备呢?首先,我们要找到chrome浏览器历史记录文件存在的位置,并能够编程获得这个位置。其次,我们要能够读取sqllite数据库文件,并能够对其进行操作。1、获得chrome浏览器历史记录数据库文件的存储位置,参考以下代码片段:#include <shlobj.h> #include \
#pragma comment(lib,\
CSIDL_LOCAL_APPDATA 0x001c char path[MAX_PATH];
SHGetSpecialFolderPathA(this->GetSafeHwnd(),path,C
SIDL_LOCAL_APPDATA,FALSE);
strcat_s(path,\Data\\\\default\\\\history\
注意,这里的history文件没有扩展名2、打开并读取历史记录数据库文件chrome在运行的时候会打开这个数据库文件,所以我们要先检测chrome是否在运行,如果在运行就不能读取数据库了,因为会有共享冲突。读取sqllite数据库文件需要有相应的api支持,这里我用了一个封装的比较好的c++类库CppSQLite3,这样读取sqllite数据库就简单多了网页历史记录存储在表urls中,懂点SQL语句的可就简单多了 用这么一条语句\,就可以将历史记录都读取出来了。那删除呢?也是一条语句“delete from urls”,这不是很简单么。不过还有一点要注意,sqllite数据库文件中默认存储的编码格式是 UTF8,我们需要将其转换为可以显示的gbk格式,否则只能看到乱码了。参考以下代码片段:bool ChromeHistory::GetUrlHistroy(CStringArray history[]) {
char path[MAX_PATH];
SHGetSpecialFolderPathA(this->GetSafeHwnd(),path,C
SIDL_LOCAL_APPDATA,FALSE); strcat_s(path,\Data\\\\default\\\\history\ if (PathFileExistsA(path)) {
后再试
urls\
if (IsRunning(_T(\{
//MessageBox(_T(\正在运行,请关闭\
return FALSE; } // try {
CppSQLite3DB db; CppSQLite3Query query; db.open(path);
query=db.execQuery(\ while(!query.eof()) {
!