• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++获取多浏览器上网历史记录示例代码(支持获取IE/Chrome/FireFox)

C++获取多浏览器上网历史记录示例代码(支持获取IE/Chrome/FireFox)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++软件工程师培训,c++,c++软件下载,c++培训,c++课程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com


// ------------------------------------------------------------------------------------------------------------------------
// Remarks:
//   BrowsHistory对象应该设置成全局,或者静态;防止还没有获取完网址,对象就析构了;
// ------------------------------------------------------------------------------------------------------------------------


#pragma once
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>

struct BrowsData
{
public:
    // 网址
    CString strURL;

    // 对应网址访问次数
    unsigned int nCount;

    // 重载<操作符
    bool operator < (const BrowsData &m)const
    {
        return nCount > m.nCount;
    }
};

class BrowsHistory
{
private:

    // 保存获得的网址和访问次数
    std::vector<BrowsData> m_BrowsHistroy;

private:

    // IE网址过滤,如只取网址com前边的
    void urlFiltrateIE (LPWSTR lpszSourceUrlName);

    // Chrome网址过滤,如只取网址com前边的
    void urlFiltrateChrome (CString strUrlName);

    // Firefox网址过滤,如只去网址com前边的
    void urlFiltrateFirefox (CString strUrlName, int nCount);

    // 查询进程是否已存在, 返回true表示存在;自动结束其进程
    bool IsRunning(CString exe);

    // 编码转换
    void ConvertUtf8ToGBK(CStringA &strUtf8);

    // 获取浏览器历史记录
    void InitHistroy (void);

    // 多线程函数
    static void ThreadPro (LPVOID * ptr);

    // 对获得的网址进行排序
    void Sort (void);

public:
    BrowsHistory();
    ~BrowsHistory();

    // 获取网址的进程,是否执行完;执行完时为true;
    bool m_bStatus;

    // 初始化
    void Init (void);

    // 获取浏览器历史记录
    std::vector<BrowsData> GetBrowsHistory(void) const;
};
</div>

#include "stdafx.h"                    // 如果编译出错请删除此行
#include "BrowsHistory.h"

#include <wininet.h>
#include "Common\\CppSQLite3.h"
#include <shlobj.h>
#include "Shlwapi.h"
#pragma  comment(lib,"Shlwapi.lib")
#include "tlhelp32.h"
#pragma comment(lib,"common\\sqlite3.lib")

#include <atlconv.h>

 

BrowsHistory::BrowsHistory()
{
    m_bStatus = false;
}

BrowsHistory::~BrowsHistory()
{

}

void BrowsHistory::urlFiltrateIE (LPWSTR lpszSourceUrlName)
{
    BrowsData browsDate;
    browsDate.nCount = 0;

    CString strTemp(lpszSourceUrlName);
   

    std::vector<BrowsData>::iterator iter;

    // 排除非必要的网址
    if (strTemp.Find(_T("@http://")) != -1)
    {
        strTemp.Delete(0, strTemp.Find(_T("@http://"))+8);

        // 排除非必要网址
        if (strTemp.Find(_T(":")) != -1)
        {
            return;
        }

        int nIndex = strTemp.Find(_T("/"));
        if (nIndex != -1)
        {
            for (iter=m_BrowsHistroy.begin(); iter != m_BrowsHistroy.end(); iter++)
            {
                if (iter->strURL == strTemp.Left(nIndex))
                {
                    iter->nCount += 1;
                    return;
                }
            }

            browsDate.strURL = strTemp.Left(nIndex);
            browsDate.nCount = 1;
            m_BrowsHistroy.push_back(browsDate);
        }
        else
        {
            for (iter=m_BrowsHistroy.begin(); iter != m_BrowsHistroy.end(); iter++)
            {
                if (iter->strURL == strTemp)
                {
                    iter->nCount += 1;
                    return;
                }
            }

            browsDate.strURL = strTemp;
            browsDate.nCount = 1;
            m_BrowsHistroy.push_back(browsDate);
        }
    }
}

 void BrowsHistory::urlFiltrateChrome (CString strUrlName)
 {
     // 删除开始的"https://"

    if (strUrlName.Find(_T("https://")) != -1)
    {
        strUrlName.Delete(0, 8);
    }
    else if(strUrlName.Find(_T("http://")) != -1)
    {
         strUrlName.Delete(0, 7);
    }

     int nIndex = strUrlName.Find(_T("/"));

    BrowsDa

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++/Php/Python/Shell 程序按行读取文件或者控制台的实现
  • C++/Php/Python 语言执行shell命令的方法(推荐)
  • 关于C++为什么不加入垃圾回收机制解析
  • 关于C++一些特性的探究
  • C++常见错误中英文对照表
  • 深入浅析 C++ 调用 Python 模块
  • 举例剖析C++中引用的本质及引用作函数参数的使用
  • C++实现添加桌面右键新建菜单
  • C++如何实现DNS域名解析
  • C++取得本机IP的方法

相关文章

  • 2017-05-28C/C++实现的游戏角色名称名字随机生成代码
  • 2017-05-28深入分析C语言中结构体指针的定义与引用详解
  • 2017-05-28浅析C++中boost.variant的几种访问方法
  • 2017-05-28解析C++中的for循环以及基于范围的for语句使用
  • 2017-05-28简单谈谈C++ 中指针与引用
  • 2017-08-30Codeforces 842B. Gleb And Pizza 模拟
  • 2017-05-28关于C语言函数strstr()的分析以及实现
  • 2017-05-28STL各个容器性能详细比较
  • 2017-05-28C++ 关于MFC List Control 控件的总结
  • 2017-05-28数据结构之数组Array实例详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++Primer笔记之顺序容器的使用详解
    • C++ 类中有虚函数(虚函数表)时 内存分布详解
    • 交换两个文本内容的C语言代码
    • 老生常谈C语言静态函数库的制作和使用
    • C语言中的函数指针学习笔记
    • C语言实现斗地主的核心算法
    • 基于Linux系统调用--getrlimit()与setrlimit()函数的方法
    • 浅谈C++的浅拷贝出现的错误
    • C++ 多重继承和虚拟继承对象模型、效率分析
    • C语言 变量详解及示例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有