赞
踩
目 录
第一章 绪论 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; //}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。