目 录
第一章 绪论 1
1.1选题背景及意义 1
1.2发展现状研究 2
1.2.1浏览器简介 2
1.2.2 浏览器发展历程 2
1.2.3 浏览器分类 3
1.2.4 chrome浏览器简介 3
1.2.5 插件开发 4
1.2 Chrome浏览器扩展插件与实现技术 5
1.3 研究主要内容 5
1.3.1研究思路 5
1.3.2实现目标 6
第二章 开发语言简介 8
2.1 JavaScript技术与Ajax技术 8
2.2 HTML语言 9
2.3插件开发环境 11
2.3.1 为什么是chrome浏览器 11
2.3.2 chrome插件开发环境 11
第三章 Chrome的详解与插件结构 13
3.1 chrome浏览器 13
3.2 chrome浏览器的特点 13
3.2.1高速程序启动快,载入网页快 13
3.2.2简单高效、易用性的设计 13
3.2.3样式 14
3.2.4多进程及多线程模型 14
3.2.5搜索简洁 14
3.3 chrome浏览器内核 14
3.4 chrome的进程与线程模型 15
3.4.1chrome的进程和线程模型 15
3.4.2chrome进程模型 15
3.5 chrome线程模型 17
3.6 chrome插件结构 18
3.6.1插件组成 18
3.6.2 manifest.json文件 18
3.6.3浏览器插件结构 19
第四章 Chrome浏览器截屏插件设计 21
4.1系统的设计目标 22
4.2系统功能整体设计 22
第五章 Chrome浏览器截屏插件实现 23
5.1系统主界面实现 23
5.2系统截图实现 25
5.3截图的编辑实现 32
5.4截图的存储实现 43
第六章 Chrome浏览器截屏插件测试 48
6.1截图软件Chrome浏览器截屏插件测试 48
6.1.1保存选项测试 48
6.1.2复制到剪切板选项测试 49
6.1.3编辑选项测试 50
6.2测试评价 51
第七章 总结与展望 52
7.1总结 52
7.2展望 52
参考文献 54
致 谢 55
1.3 研究主要内容
1.3.1研究思路
相对比于国际上主流的五款浏览器:Internet Explorer(IE)浏览器、google chrome浏览器、firefox(火狐)浏览器、safari浏览器、opera浏览器。它们各自的特点和缺点都有着极大的差异。
(1)IE浏览器内核虽说更安全,但它的拓展性几乎为零,并且容易中毒。不利于开发人员在此平台上开发插件。
(2)firefox(火狐)浏览器拓展性强安全性也高,但网页有错位以及媒体的功能不齐全等问题,若在此开发截屏插件恐存在的难题是不准确的截屏
(3)safari浏览器作为苹果公司开发的一款浏览器,与运行在macOS上的safari相比,有些功能出现丢失。
(4)Opera浏览器是浏览器的先驱,当今浏览器上的功能许多都是效仿Opera的,例如鼠标的手势功能正是Opera最先开发的。但由于并不常见,拓展性不如谷歌。
(5)google chrome浏览器的优点是:不易崩溃,兼容性好,速度快,几乎隐身,搜索简单,标签简单,更加安全。是插件开发以及程序开发的最佳选择
而在开发人员以及普通用户的选择上,Chrome浏览器在用户的使用上,占有率无疑是更高,更多人用的。以及基于谷歌浏览器的开发更简单;Chrome插件是一个用Web技术开发、用来增强浏览器功能的软件,它其实就是一个由HTML、CSS、JS、图片等资源组成的一个.crx后缀的压缩包。之所以选择Chrome插件而不是Firefox插件的主要原因是:应用场景更广泛,Firefox插件只能运行在Firefox上,而Chrome除了能在Chrome浏览器运行之外,还可以运行在所有webkit内核的国产浏览器,比如360极速浏览器、360安全浏览器、搜狗浏览器、QQ浏览器等等;目前国产的浏览器没有真正意义上独立的内核技术,所以才导致众多国产浏览器它们都是基于谷歌浏览器内核的基础上开发出来的。因此基于谷歌浏览器开发的截屏插件,本文转载自http://www.biyezuopin.vip/onews.asp?id=14082基本上是可以运用在众多的国产浏览器中,除此之外,Firefox浏览器也对Chrome插件的运行提供了一定的支持。
1.3.2实现目标
(1)该截屏插件能够基于在chrome浏览器上实现基本的截屏功能,并可以运用键盘中的快捷键进行快速截图。
(2)基于chrome浏览器中,插件可以截屏到所有的全屏版面,并点击保存图标按钮,将其保存至桌面。(滚动截屏)
(3)在使用开发的截图插件进行截图时,用户可以根据想要截取信息进行更改截图范围,通过快捷键调出插件的截图功能,并使用鼠标长按左键用来拉取截图范围。
(4)在截图的过程中,左上角动态显示截图框的长宽数值,松开鼠标即截屏的范围。截图完成后可在图中进行文本标注,画重点,取消此次截屏,保存到本地等功能操作。当截取范围错误时,通过功能框中的取消键取消当前截图。

#include "StdAfx.h"
#include "mainsql.h"
#include "ScriptablePluginObjectBase.h"
#include "mainSqlObject.h"#include "commonfunc.h"CMainSql::CMainSql(NPP pNPInstance):CPlugin(pNPInstance),m_pNPInstance(pNPInstance),m_pScriptableObject(NULL)
{OutputDebugStringA("CMainSql_construct");
}
CMainSql::~CMainSql(void)
{if (m_pScriptableObject)NPN_ReleaseObject(m_pScriptableObject);
}
NPObject *CMainSql::GetScriptableObject()
{OutputDebugStringA("CMainSql_getscriptableobject");if (!m_pScriptableObject) {m_pScriptableObject =NPN_CreateObject(m_pNPInstance,GET_NPOBJECT_CLASS(ScriptableMainSqlObject));}if (m_pScriptableObject) {NPN_RetainObject(m_pScriptableObject);}return m_pScriptableObject;
}
//bool CMainSql::CreateConnect(NPVariant *result)
//{
//  NPObject *arr=NULL;
//  if (!arr) {
//      arr =
//          NPN_CreateObject(m_pNPInstance,
//          GET_NPOBJECT_CLASS(ScriptableSqlObject));
//  }
//  if(!arr)
//      return false;
//  OBJECT_TO_NPVARIANT(arr,*result);
//  return true;
//}
//
//HRESULT CMainSql::GetSlotList(NPVariant *lists)
//{
//
//  if( NULL == pInstance )
//          return S_FALSE;
//
//
//  unsigned long _DeviceNum = 20;
//  unsigned long _Devices[20] = {0,};
//
//  if(0!=pInstance->getSlotList(_Devices,&_DeviceNum))
//  {
//      //这里是一个空对象
//  }
//  else
//  {
//      //这里是一个数组
//      string tempstr;
//      if (_DeviceNum>0)
//      {
//          NPObject *m_arr=NULL;
//          if (!m_arr) {
//              m_arr =
//                  NPN_CreateObject(m_pNPInstance,
//                  GET_NPOBJECT_CLASS(ScriptableVarryObject));
//          }
//          if(!m_arr)
//              return false;
//
//          ((ScriptableVarryObject*)m_arr)->initVarry(VARRYTYPE_CK_OBJECT_HANDLE);
//
//          //MessageBox(NULL,"find the slot",NULL,0);
//          for (unsigned int i=0;i<_DeviceNum;i++)
//          {
//              ((ScriptableVarryObject*)m_arr)->addToVarry("ulong",_Devices[i]);
//
//          }
//          OBJECT_TO_NPVARIANT(m_arr,*lists);
//      }
//
//  }
//
//  return S_OK;
//}














Chrome浏览器截屏插件的开发相关推荐

  1. 一个简单的Chrome浏览器“清理缓存”插件应用开发

    Chrome浏览器支持用户自定义安装丰富的插件来方便我们的使用,特别是对于一个码农来说,一些丰富的插件能够很方便我们的日常开发.本人就安装了许多方便的插件. 固然商店里有很多插件让我们去淘,但是如果我 ...

  2. chrome 浏览器截屏

    文章目录 文章参考 问题描述 使用步骤 文章参考 chrome浏览器怎么截图 chrome截屏快捷键 问题描述 在浏览器中写了一个demo ,内容非常的多,出现了纵向滚动条,想要截屏,发现之前的滚动截 ...

  3. 【日常】edge和chrome浏览器截屏工具快捷键

    首先打开开发者工具 使用右键===>检查 就能打开开发者模式 在开发者模式下,快捷键ctrl+shift + p 然后输入截屏,就能看到了

  4. Sketch网页截屏插件设计开发

    1.需求 在Sketch的Artboard中插入网页截图: 1.1.输入网址,自动截图到Artboard中,并居中显示: 1.2.可截取网页局部图片 2.技术选型 技术的选型主要是针对截图功能的选型, ...

  5. window 系统chrome浏览器截屏

    文章目录 1.截全屏 2.截某个元素,也就是截图一分部 1.截全屏 1.Ctrl + shift + I 进入开发者工具(也可以右上角三个点,选择更多工具,然后点击开发者工具) 2.Ctrl + sh ...

  6. Chrome浏览器录屏扩展插件

    Chrome浏览器录屏扩展插件,可以录制网页操作或者桌面操作.生成MP4 Loom https://chrome.google.com/webstore/detail/loom-video-recor ...

  7. 运用插件html2canvas浏览器截屏的方法

    运用插件html2canvas浏览器截屏的方法 首先先安装 html2canvas 插件 toIMage() {// 获取dom元素let canvasBox = this.imageToFileRe ...

  8. golang实现服务端浏览器截屏

    " 每天,探索一点点." 笔者近期在使用golang进行开发工作时,受360技术公众号曾发布过文章的启发,想到是否可以使用golang操作无屏浏览器(headless browse ...

  9. golong实现服务端浏览器截屏

    笔者说:近期在使用golang进行开发工作时,受360技术公众号曾发布过文章的启发,想到是否可以使用golang操作无屏浏览器(headless browser)实现诸如爬虫.截屏.自动化测试等功能. ...

最新文章

  1. 【推荐】ZendStudio 5.5.1 开发调试(Debug)配置说明
  2. 5G 网络接口与基础流程
  3. SpringBoot整合Spring Security——登录管理
  4. 图论最短距离(Shortest Path)算法动画演示-Dijkstra(迪杰斯特拉) 和 Floyd(弗洛伊德)
  5. (水题)洛谷 - P1603 - 斯诺登的密码
  6. day24 反射\元类
  7. Alpha 冲刺报告2
  8. UE4 Roadmap
  9. java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)...
  10. 动态设置样式 calc计算
  11. pytorch之---max()函数
  12. 常州儿童计算机培训,常州推荐儿童编程培训班哪几家靠谱
  13. android+字体稍微加粗,的Android设置的Roboto字体,加粗,斜体,普通,...(有点像自定义字体家族)...
  14. 模拟电子技术知识点总结
  15. access orcad 数据库_cis(orcad)本地元件access数据库创建跟加载方法详解.doc
  16. java两数相乘的函数_jquery 加法 乘法运算 精确计算函数
  17. LATEX教程第四讲——那些不得不说的宏包(下)
  18. RationalDMIS 7.1 更新实际元素:
  19. Cadence Genus userguide阅读笔记
  20. 2014-15赛季已然过半...

热门文章

  1. Hexo系列matery主题踩坑优化记录
  2. boto3 连接aws_Python,Boto3和AWS S3:神秘化
  3. 【vue】【intersectionObserver】滚动正文时菜单滚动到对应菜单
  4. vue中的几个动效网站
  5. python-名字按拼音排序-(用pypinyin)
  6. 大数据归档-冷热数据分离
  7. 光纤收发器tx和rx,光纤收发器单模和多模的区别!
  8. java long 百分比,Java 数字转百分比%
  9. 指法练习软件ECAI使用指南
  10. flv.js php,flv.js的使用详解