精华内容
下载资源
问答
  • 软件测试规范

    2018-04-23 09:16:12
    1.什么是软件测试 .................................................................................................................................. 2 2.软件测试的目标 ....................................
  • 网上找的源码,用VC实现文件的打印,但是有点bug,添加了... bug: 测试了下,如果网页有脚本错误或被浏览器拦截了插件,则打印出来的内容可能空,不知道有什么好的解决办法吗? 另外,对于网页上的页面无效果...

    网上找的源码,用VC实现文件的打印,但是有点bug,添加了注释,如果有人能解决这几个bug,请告诉我一声。代码如下:

    /*
    	功能:打印任何浏览器能打开的本地文件,并实现打印功能
    	@sURL: 要打印的文件路径(只能打开本地文件)
    	bug: 测试了下,如果网页有脚本错误或被浏览器拦截了插件,则打印出来的内容可能为空,不知道有什么好的解决办法吗?
    		 另外,对于网页上的页面无效果(不会打印出文件来)
    */
    BOOL Print_html(const char *sURL)
    {
    	HRESULT hr;
    	CLSID clsid;  
    	IUnknown     *pUnknown = NULL;  
    	IWebBrowser2 *pWebBrowser2 = NULL;  
    	IOleCommandTarget* pCommandTarget = NULL;  
    	IDispatch *pDispatch = NULL;
    	VARIANT va;  
    	OLECHAR sOleChar[MAX_PATH];  
    	CoInitialize(NULL);  
    	CLSIDFromProgID(L"InternetExplorer.Application", &clsid);  
    	hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IUnknown, (void  **)&pUnknown);
    	if (SUCCEEDED(hr))  
    	{
    		hr = pUnknown->QueryInterface(IID_IWebBrowser2, (void **)&pWebBrowser2);
    		if (SUCCEEDED(hr))
    		{  
    			VariantInit(&va);  
    			va.vt = VT_I4;  
    			va.lVal = 0;  
    			MultiByteToWideChar(CP_ACP, 0, sURL, -1, sOleChar, sizeof sOleChar);  
    			BSTR bstrURL = SysAllocString(sOleChar);  
    			hr = pWebBrowser2->Navigate(bstrURL, &va, &va, &va, &va);
    			SysFreeString (bstrURL);
    			hr = pWebBrowser2->get_Document(&pDispatch);
    			if (SUCCEEDED(hr))  
    			{  
    				hr =  pDispatch->QueryInterface(IID_IOleCommandTarget,(void**)&pCommandTarget);  
    				if (SUCCEEDED(hr))  
    				{  
    					hr = pCommandTarget->Exec(NULL, OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
    					Sleep(2000);
    					pCommandTarget->Release();
    				}  
    				else  
    				{  
    					pDispatch->Release();
    					pWebBrowser2->Release();
    					pUnknown->Release();  
    					CoUninitialize();  
    					return FALSE;
    				}  
    				pDispatch->Release();  
    			}  
    			else
    			{  
    				pWebBrowser2->Release();  
    				pUnknown->Release();  
    				CoUninitialize();  
    				return FALSE;
    			}  
    			pWebBrowser2->Release();  
    		}
    		else
    		{
    			pUnknown->Release();  
    			CoUninitialize();  
    			return FALSE;
    		}  
    		pUnknown->Release();  
    	}  
    	else
    	{
    		CoUninitialize();  
    		return FALSE;
    	}
    	CoUninitialize();  
    	return TRUE;
    }
    
    //是否打印页眉、页脚
    //i_sign: 0-打印
    //    1-不打印
    BOOL Print_header_footer(int i_sign)
    {
    	const int KEY_LEN = 100;
    	char lp_header[KEY_LEN];
    	char lp_footer[KEY_LEN];
    	char *str_keyname = "Software\\Microsoft\\Internet Explorer\\PageSetup\\";
    	HKEY hKey;
    	int err;
    	if(RegOpenKeyEx(HKEY_CURRENT_USER,str_keyname,0,KEY_WRITE,&hKey) != ERROR_SUCCESS)
    	{
    		err = GetLastError();
    		return FALSE;
    	}
    	if(i_sign == 0)
    	{
    		memset(lp_header,0,sizeof(lp_header));
    		memset(lp_footer,0,sizeof(lp_footer));
    		strcpy(lp_header,"&w&b页码,&p/&P"); //"&w&b页码,&p/&P";
    		strcpy(lp_footer,"&u&b&d");    //"&u&b&d";
    		
    		if(RegSetValueEx(hKey, "header", 0, REG_SZ, (const unsigned char *)lp_header, strlen(lp_header))!=ERROR_SUCCESS)
    		{
    			RegCloseKey(hKey);
    			return FALSE;
    		}
    		if(RegSetValueEx(hKey, "footer", 0, REG_SZ, (const unsigned char *)lp_footer, strlen(lp_footer))!=ERROR_SUCCESS)
    		{
    			RegCloseKey(hKey);
    			return FALSE;
    		}
    		RegCloseKey(hKey);
    		return TRUE;
    	}
    	if(i_sign == 1)
    	{
    		memset(lp_header,0,sizeof(lp_header));
    		memset(lp_footer,0,sizeof(lp_footer));
    		
    		if(RegSetValueEx(hKey, "header", 0, REG_SZ, (const unsigned char *)lp_header, strlen(lp_header))!=ERROR_SUCCESS)
    		{
    			RegCloseKey(hKey);
    			return FALSE;
    		}
    		if(RegSetValueEx(hKey, "footer", 0, REG_SZ, (const unsigned char *)lp_footer, strlen(lp_footer))!=ERROR_SUCCESS)
    		{
    			RegCloseKey(hKey);
    			return FALSE;
    		}
    		RegCloseKey(hKey);
    		return TRUE;
    	}
    	
    	return TRUE;
    }
    

     

    经测试,Print_Html只对本地文件有效,对于输入的网址,不会产生任何打印文件。而且本地的文件不能有脚本错误,要不然,有可能打印出来的文件内容为空。

    这个代码的原理是利用流利器打开一个文件,再利用浏览器菜单中的打印功能来实现文件打印的。所以如果你不是用微软默认的Internet Explorer.exe的话,可能无法实现文件打印,因此必须将IE浏览器设置为默认的浏览器才可以噢!

    展开全文
  • 为什么用OAuth2.0受权? 通过OAuth2.0受权的网页将会获取到打开者的微信信息,甚至包括微信昵称、头像等有用的数据,开发者们可以凭此设计出更多更丰富的页面应用,比如最近一直很火爆的红包类活动。除此之外还有个...
  • 为什么其它群的话单正常,唯独11群不正常呢?11群是四个群中最小的群,其中继计次表位于缓冲区的首位,打完电话后查询内存发现出中继群号在内存中是正确的,取完话单后再查就不正确了。 结 论: 话单池的一个备份...
  • o 3.11 为什么 sizeof 返回的值大于结构的期望值, 是不是尾部有填充? o 3.12 如何确定域在结构中的字节偏移? o 3.13 怎样在运行时用名字访问结构中的域? o 3.14 程序运行正确, 但退出时却 ``core dump''了,...
  • 《豆瓣资源下载大师》是一款好用的搜索聚合工具,让用户以作品的豆瓣评论详情页入口,直达各种资源网站的作品下载,极大减轻了找资源的工作量! 086《CSDN开发助手》CSDN官方合法免广告工具,内含大量实用开发...
  • flash shiti

    2014-03-14 10:32:41
    21.Flash中如果想要测试完整的互动功能和动画功能怎么办? A. 选择 Control > Loop Playback B. 选择 Control > Enable Buttons C. 选择Control > Test Movie D. 选择 Control > Actions 22.Flash 菜单View→...
  • JAVA内存问题。

    2011-01-04 15:33:54
    2:为什么我程序里面调用runtime.maxMemory()打印出来的最大内存数是519m(519.....K),而我设置的-Xmx是512M,好像有3M不见了。我认为可能是虚拟机不会准确的去抓去512M,只能在512M左右,不知这样理解对否。 3:...
  • 用户对软件有什么意见和建议,可以到这里发帖,有什么问题在这里可以得到解答。 (4)关于:显示软件版本号及开发者相关信息。 二、工资统计重要说明: 系统在进行工资年度统计时,汇总后工资项目的划分是以统计年度...
  • 2.2 为什么struct x f . . . g; x thestruct; 不对? . . . . . . . . . . . . . 7 2.3 一个结构可以包含指向自己的指针吗? . . . . . . . . . . . . . . . 7 2.4 在C 语言中实现抽象数据类型什么方法最好? . . . ....
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    2.2 为什么struct x f . . . g; x thestruct; 不对? . . . . . . . . . . . . . 7 2.3 一个结构可以包含指向自己的指针吗? . . . . . . . . . . . . . . . 7 2.4 在C 语言中实现抽象数据类型什么方法最好? . . . ....
  • 重新来过的代价就是多年来自己认真测试的成果很多都会被丢弃了,什么都从零又开始,只是积累了一些丰富的经验教训,新的开发起来会顺利一些,但是也是倒退50步前进100步的事情,虽然是又前进了50步,但是折腾了150步...
  • WPS 2000 强调以用户中心这一特点,用 WPS 2000 编辑打印中文文档,从文字校对、纸张类型到打印方式都能满足国内用户对处理中文文档的需求。多种工具条和丰富的图文符号是各类技术人员制作专业资料的强劲工具。...
  • 为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a ...
  • 修改操作的对象也可以是元组的集合,相对于面向记录的数据库语言一次只能操作一条记录来 语言的使用简化了用户的处理,提高了应用程序的运行效率 语言简洁,方便易学 语言功能强大,格式规范,表达简洁,接近英语的语法...
  • PHP面试题汇总

    2020-12-09 13:38:34
    <code>echo</code> 和 <code>print</code> 只能打印出string,不能打印出结构; <code>print_r能打印出结构。比如: <pre><code> php $arr = array("key"=>"value"); ...
  • Visual Studio程序员箴言--详细书签版

    热门讨论 2012-10-16 20:37:39
    技巧4.23 为什么要让工具窗口处于浮动状态 88 4.2.4 选项卡式文档状态 89 技巧4.24 使用选项卡式文档最大化工具窗口 89 4.2.5 键盘导航 90 技巧4.25 使用Alt+F7键和Alt+Shift+F7键移到下一个或前一个工具...
  • 400个DreamWeaver插件

    2013-03-28 15:30:13
    mxp/在Dreamweaver中快速的插入一个Fireworks做好的图片,不过好象只能做空白图 :( mxp/这个插件用来代替Dreamweaver File菜单下的New Form Template命令。作用是可以侦测出站点内的模板,这样就直接打开了,而不...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    C#--微软.NET的第一语言 本书着重介绍语言本身,比较少涉及应用,不错的入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 ...
  • 首先关于启用Guest为什么不能访问的问题: 1、默认情况下,XP 禁用Guest帐户 2、默认情况下,XP的本地安全策略禁止Guest用户从网络访问 3、默认情况下,XP的 本地安全策略 -> 安全选项里,"帐户:使用空密码用户...
  • 在命令行输入,gradlew compileDebugSources,可以查看打印报错的信息,这句话可以控制台输出代码报错的日志。 IOException: CreateProcess error=2, 系统找不到指定的文件。 具体报错日志如下所示 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    <<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代...
  • Visual C++ 2005 入门经典 详细书签版

    热门讨论 2013-02-02 16:39:43
    9.9.5 被指定new的函数 501 9.9.6 委托和事件 502 9.9.7 引用类的析构函数和结束函数 514 9.9.8 通用类 516 9.10 小结 527 9.11 练习 528 第10章 调试技术 531 10.1 理解调试 531 10.1.1 程序...
  • 9.9.5 被指定new的函数 501 9.9.6 委托和事件 502 9.9.7 引用类的析构函数和结束函数 514 9.9.8 通用类 516 9.10 小结 527 9.11 练习 528 第10章 调试技术 531 10.1 理解调试 531 10.1.1 程序...
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    1、MapGis数据转入Excel后表格内容空白什么原因? 答:可能原因是转的时候没有正常关闭com接口,可以关闭Section,重新打开Section再试试,或者打开任务管理器,关闭所有Excel进程。 2、Excel单元格数据转入MapGis...
  • WIN XP蓝屏代码大全

    2013-08-08 12:29:21
    有时保卫科可以顺利的查到是哪个生产小组的问题, 会在第一部分明确报告是哪个文件犯的错, 但常常它也只能查个大概范围, 而无法明确指明问题所在. 由于工厂全面被迫停止, 只有重新整顿开工, 有时, 那个生产小组会意识...
  • Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 ...
  • 多媒体教室

    2013-06-14 08:10:31
    多媒体网络教室经过严格的软、硬件测试过程,全面支持 Windows 系列操作系统,包括 Windows 9X、Windows Me、Windows NT 4.0、Windows 2000、Windows XP以及 Windows RPL/PXE 无盘工作站,支持跨网段校园网教学,对...
  • 网上购物系统

    2012-12-18 17:53:18
    该事件不能对所购买的商品数量的更改而更改,只能通过确认更改来实现。 </p><br /> <p>目</b><b normal">  </b><b normal">录</b><b normal"></b></p> 第一章 系统配置... 3 一、运行环境... 3 二、...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

为什么只能打印测试页