技术研究
文章平均质量分 69
guanzhongs
这个作者很懒,什么都没留下…
展开
-
开发基于ASP.NET WebService的图片验证码服务
最近,工作中接到一项任务,开发一个页面验证码功能,查阅了一些网上的资料,并结合以前的绘图方面的知识,实现了如下的解决方案。生成的验证码效果如图:要解决的问题:1. 如何随机生成图片 生成System.Drawing.Bitmap对象,使用System.Drawing.Graphics向位图对象中绘图。2. 如何在WebService的方法中通过参数传递图片数据 将Bit原创 2005-12-29 09:52:00 · 4423 阅读 · 0 评论 -
动态库的对话框中嵌入Com组件的问题
前些天做一个内嵌有IE控件的对话框,我把对话框类封装在一个MFC Regular DLL中。然后测试时发现对话框弹出后,怎么也不能显示出IE的控件。用同样的方法,直接把Dialog放在一个MFC APP程序中测试,弹出的对话框可以正常显示IE控件。APP和DLL初始化时都调用了AfxEnableControlContainer();后来直接跟踪DLL中的COM创建,跟踪到occsite.cpp文件原创 2006-04-29 11:14:00 · 3029 阅读 · 3 评论 -
突破网站页面的下载限制
昨天研究如何下载一个网站某项活动的投票页面(有作弊嫌疑,不要声张)。一般在.net,可以通过如下代码下载指定url链接返回的数据: int nSize = 1024*20; byte[] buf=new byte[nSize]; HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(strUrl); loHttp.Method原创 2006-04-29 11:17:00 · 3693 阅读 · 1 评论 -
C#程序中转义大括号问题('{','}')
写一个用C#程序生成javascript脚本程序的代码, 在格式化字符串中,发现如果格式字符串中出现{或},程序可能导致异常.原因是C#格式化字符串中,{}对用来表示参数序号.搜索的MSDN得到如下解释:-------------------------------------------------------------------------转义大括号左大括号和右大括号被解释为格原创 2006-09-29 21:41:00 · 7213 阅读 · 0 评论 -
GB编码转换为UTF8编码
在前面的文章《通过短信网关发送Wappush消息》中使用到了一个GB2UTF8的函数,有朋友问到这个函数的实现方法。代码如下:-----------------------------------------------------------bool GB2UTF8(char *pszGB, char *pszUTF8){ int nUCS2Len = (strlen(pszGB) + 1)原创 2006-09-28 23:19:00 · 2727 阅读 · 0 评论 -
创建网页Video上的悬浮工具条(Create toolbar overflow video on webpage)
创建网页Video上的悬浮工具条Create toolbar overflow video on webpage 前些天研究使用javascript脚本操作网页上的视频控件.因为设计的需要,想要在视频窗口上增加一个弹出式的工具条,类似于Realone的全屏按钮,当鼠标移动到视频区域时,工具条可以弹出,超过一定时间不操作,工具条可以自动隐藏. 但是在试验过程中使用Wind原创 2006-06-19 20:29:00 · 3203 阅读 · 0 评论 -
使用WaitForMultipleObjects时注意的问题
使用WaitForMultipleObjects时注意的问题今天处理了一个客户端控件的BUG。这个控件会创建几个线程,每个线程链接服务器下载数据文件及图片等内容。昨天有用户反映在他机器上不能正常获得下载数据,后来经了解用户使用的是Win2K的操作系统,而我在WinXP上反复测试都没有问题。然后找到一台Win2K的机器进行测试,确实下载存在问题。通过输出log文件调试,发现在一处调用WaitFo原创 2007-03-28 21:39:00 · 7162 阅读 · 1 评论 -
探究C/C++可变参数
C/C++支持可变参数个数的函数定义,这一点与C/C++语言函数参数调用时入栈顺序有关,首先引用其他网友的一段文字,来描述函数调用,及参数入栈:------------ 引用开始 ------------ C支持可变参数的函数,这里的意思是C支持函数带有可变数量的参数,最常见的例子就是我们十分熟悉的printf()系列函数。我们还知道在函数调用时参数是自右向左压栈的。如果可变参数函数的一般形式原创 2007-04-04 14:14:00 · 3105 阅读 · 3 评论 -
编写安全的Symbian C++游戏代码
本文来自互联网,感觉内容很好,收藏于此。文章末尾有原作者信息,如转贴请保留。本文献给使用Nokia Symbian 60 SDK各个版本开发游戏软件的程序员。虽然本文主要是针对游戏软件,但是大部分内容对一般应用软件也同样适用。1.1.声明为了避免良心的谴责,首先我必须承认一点,我本人并不是靠Symbian C++糊口。除了forum.nokia.com上的文章和SDK,我也没有看过任何关于Symb转载 2007-11-20 12:04:00 · 1120 阅读 · 0 评论 -
About Symbian Capabilities
Symbian平台在设计时,考虑到安全性,为程序发布设计了Capability,程序只能进行指定能力的系统操作。 Capability又分多个级别,实际应用中,不是所有开发者都能申请到这些级别认证的,所以程序发布就受到了一些限制。 为程序指定能力,只需要在mmp文件中编辑这一行: CAPABILITY MultimediaDD WriteDeviceData ReadDeviceDat原创 2007-12-05 12:00:00 · 1187 阅读 · 0 评论 -
Symbian S60开发,在真机上显示panic异常信息。
在用Symbian C++做S60应用开发过程中,使用模拟器运行时,如果程序出现panic或者memory leak,系统会弹出对话框,提示异常类型以及相关参数。程序在真机上运行时,因为考虑到手机用户的感受,不会显示这些异常提示。而针对开发一些只能在真机上进行测试的应用(如与摄像头相关的视频capture)时,这种异常调试信息是非常有用的。那么能否在真机上也显示异常调试信息呢?答案是肯定的。具体实原创 2007-12-11 16:14:00 · 1242 阅读 · 0 评论 -
Symbian S60开发,在SettingList中使用RadioButton的问题及解决方法。
在S60应用中,使用SettingList作功能设置选项,里面有一项用到了RadioButton组,但是程序运行时选择该项进行编辑时,出现KERN-EXEC 3异常,反复检查rss中资源脚本及程序代码,调用都没有问题,代码完全参照S60 SDK里SettingList的Sample。最后注意到Sample和自己工程的SettingList外观有些不同,自己的工程在UI类ConstructL时,调用原创 2007-12-17 12:39:00 · 1340 阅读 · 1 评论 -
使用.NET Compact Framework开发Windows Mobile程序,不能触发OnKeyPress/OnKeyDown的原因及解决办法
在.Net CF WinForm应用中,制作OwnerDraw控件,控件类从Control继承。为了捕获键盘按键消息,重载了OnKeyPress方法: protected override void OnKeyPress(KeyPressEventArgs e) { }但是运行发现,该方法并未被触发,尝试其他方法重载,OnKeyDown/OnKeyUp,都一样无效。原创 2007-12-25 16:49:00 · 1309 阅读 · 0 评论 -
.NET WinForm程序,用中文输入法输入字符时,重复触发OnKeyPress消息问题
从Control类继承一个自定义控件,同时重载了OnKeyPress事件,发现用中文输入法(如紫光拼音)输入文字时,OnKeyPress事件会被 触发两次。如输入“中国人”,则会依次收到“中国人中国人”这样的字符序列。原因是在OnKeyPress处理后没有设置 e.Handled = true; 这个属性值表示你是否获得并处理了这次事件,如果不设置,则系统还会触发一次事件,加上之后,就原创 2007-12-29 16:25:00 · 2474 阅读 · 0 评论 -
Linux启动时 Error 15: File not found 问题解决方法
今天,在Linux上安装某软件之后,重新启动,系统提示: root (hd0,0)Filesystem type is ext2fs, partition type 0x83 kernel /bzImage_1360×768 ro root=LABEL=/ video... Error 15: File not found Press any key to conti原创 2008-06-04 17:43:00 · 24299 阅读 · 0 评论 -
自定义浏览器的研究
我在进行自定义浏览器控件时,要去掉3D边框和滚动条,所以实现了IDocHostUIHandler接口,并在其回调接口GetHostInfo中提供了相应的flag设置。当重新实现自定义接口后,需要在控件容器中调用AfxEnableControlContainer()方法,将自定义接口传递给系统模块,供其回调。注意AfxEnableControlContainer()这个方法可以随时反复调用(但必须在原创 2006-08-31 23:57:00 · 1210 阅读 · 0 评论 -
[备忘]自定义IE浏览器控件
英文原文:http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/hosting/wbcustomization.asp译文出处:http://dev.csdn.net/article/19/19627.shtm 自定义浏览器本教程提供了自定义浏览器控件的行为和外观的一些方法。你将看到高级的宿主接口,IDo转载 2006-08-31 23:42:00 · 2535 阅读 · 0 评论 -
[续上篇] 改进的图片验证码
上次开发出图片验证码之后(上篇文章),根据一些朋友的建议,本着验证码易识别(针对人),不易破解,美观的原则,改进了验证码生成的算法,采用图像滤镜的方法,对图片验证码进行反破解干扰,结果图片示例如下:滤镜效果主要采用波形(wave)算法,通过对X轴Y轴的正弦波形处理,产生叠加效果。算法主要描述如下: private const double PI = 3.141592653589793原创 2006-01-06 09:22:00 · 3190 阅读 · 3 评论 -
[MSDN翻译 之 《关于GDI+》] [2] GDI+新特性
GDI+有哪些新特性? 微软GDI+开发库与先前的GDI主要有两方面不同。一,GDI+扩展了GDI的功能,如颜色渐变填充,Alpha透明运算;二,重新设计的编程模型,使得开发图形程序更加方便。 新特性下面的部分描述了GDI+的一些新特性。渐变画刷基本样条曲线 独立路径对象变换和矩阵可伸缩区域Alpha叠加多种图像格式的支持渐变画刷(Gradient Brushes)GDI+从GDI上扩展了对图形的翻译 2006-01-08 20:35:00 · 2005 阅读 · 0 评论 -
二维交互绘图中的线段拣选算法
在两年多前,曾在开发一个交互式流程图绘制工具时,遇到了屏幕二维线段鼠标拣选(用鼠标激活线段)的问题。当时要求在鼠标接近线段时,鼠标光标要变成手指形状,而且此时如果用户按下鼠标左键,则可以激活该条线段。问题的核心是,如何判断鼠标接近了线段。很直接的想法是:鼠标移动过程中,计算鼠标点到线段的垂直距离,如果距离小于设定的临界值,则判断为鼠标接近了线段。但是随后又考虑,平面上,计算一个点到直线的垂原创 2006-01-07 16:47:00 · 1883 阅读 · 2 评论 -
[MSDN翻译 之 《关于GDI+》] [1] GDI+介绍
写在翻译前面这些内容来自微软的MSDN,如果读者具备以前系统的GDI知识,则阅读下述内容会感到很轻松,GDI+作为GDI的后续增强版本,提供了不少新特性,相信也做了不少的性能优化(本人没有做过测试,不敢给出具体情况)。有些新特性,如颜色渐变的区域填充、Alpha透明运算等,在以前的GDI中实现起来比较麻烦,甚至要使用Win32的未公开API。GDI+的C++封装,给程序开发者带来了方便和效率,不过翻译 2006-01-08 01:10:00 · 3283 阅读 · 0 评论 -
展示几个使用Ajax技术的站点
引子:Ajax这个名词是一位叫做杰西·詹姆斯·加勒特(Jesse James Garrett)的美国人创造的。杰西是研究用户界面的Adaptive Path公司负责用户体验策略的主管,他在2月18日发表了一篇题为《Ajax:一个Web应用的新途径》的论文,明确的将Ajax定义为“Asynchronous JavaScript + XML”的简称,也就是异步的JavaScript和XML处理。从原理原创 2006-01-10 00:31:00 · 1933 阅读 · 24 评论 -
用Windows批处理文件封装ftp文件下载
这几天,工作中需要从远端ftp服务器下载并分析大量数据文件。数据文件的分析没什么可说的,就是字串解析,要说说ftp文件下载。要下载ftp服务器上的文件,方法有多种,如:1. 用Socket建立链接,然后按照FTP协议,进行命令字交互,这相当于实现一个小的ftp客户端程序;2. 用WinSDK中的WinINet, 里面提供了FtpGetFile这样的一系列方法,用于ftp客户端编程;3. 使用类似C原创 2006-01-26 14:04:00 · 6084 阅读 · 0 评论 -
用C#建立通用对象池[1]
在系统设计中,经常会使用“池”的概念。比如数据库连接池,socket连接池,线程池,组件队列。“池”可以节省对象重复创建和初始化所耗费的时间,可以简化对象获取和使用的过程。对于那些被系统频繁请求和使用的对象,如果使用这种机制,可以使系统性能得到很大提高。特别象数据库连接这种对象,客户端与数据库服务器端建立连接时,是比较慢的,如果每次进行数据库操作,都要先进行数据库连接,系统效率将非常低下。原创 2006-03-14 19:43:00 · 4062 阅读 · 0 评论 -
[收藏]GIF文件格式
GIF文件格式 2. 文件结构 1 Header GIF文件头转载 2006-02-09 23:31:00 · 2439 阅读 · 1 评论 -
用C#建立通用对象池[2]
创建一个接口,用于限定对象池中所保存的对象的基本行为: public interface IDynamicObject { void Create(Object param);原创 2006-03-23 22:54:00 · 4129 阅读 · 0 评论 -
[收藏]NET 连接池救生员
NET 连接池救生员防止可淹没应用程序的池溢出William Vaughn大多数 ADO.NET 数据提供程序使用连接池,以提高围绕 Microsoft 断开连接的 .NET 结构构建的应用程序的性能。应用程序首先打开一个连接(或从连接池获得一个连接句柄),接着运行一个或多个查询,然后处理行集,最后将连接释放回连接池。如果没有连接池,这些应用程序将花费许多额外时间来打开和关闭连接。转载 2006-03-26 05:50:00 · 1358 阅读 · 0 评论 -
用C#建立通用对象池[3]
虽然.NET对数据库连接已经提供了连接池,但是,经测试,使用上述通用对象池实现的数据库连接池,效率要比直接使用.NET管理的连接池高。因为他减少了Open和Close操作,从而节省了时间。代码如下: public class DBPool {原创 2006-03-26 05:35:00 · 2478 阅读 · 2 评论 -
在Web页面中实时返回状态信息
在Web应用中,经常遇到一个页面请求,需要等待较长时间,才能看到返回的数据,特别是和大量业务数据有关的查询页面,此时,如果能在页面上实时返回进度状态,将对客户感受有很大的提高。 当用户使用浏览器向服务端发送Http请求后,服务端数据还未完全处理完成时,客户端与服务端的网络连接时没有断开的,这个时候从服务器端可以向客户端浏览器返回数据。 下面是ASP.NET环境下的演原创 2006-02-26 00:45:00 · 2316 阅读 · 0 评论 -
通过短信网关发送Wappush消息
这一阵子工作内容比较杂,啥活都要干,这不,这两天公司需要通过sms短信网关,发送wappush消息。因为已经有了另一个同事的工作基础,我所要作的就是使发送出去的消息尽量支持更多的手机型号。在网上搜关于wap和短信方面的资料,收获不多,而且不很具体。最后经过不懈的努力,大量的试验,现在已经可以支持很多种机型了。如:索爱K750c, 索爱K700, MOTO A768, Nokia3230, Noki原创 2006-02-24 00:03:00 · 7113 阅读 · 2 评论 -
用C#接口实现通用的文本数据序列化
在企业应用中,经常遇到对文本数据的读入和写入问题。如一个移动话单文件,或者使用SQLServer导出的文本数据,可能会包含这样的内容: … 13411112222,XXXX,20060225121800,1000 13512345678,YYYY,20原创 2006-02-25 13:28:00 · 1995 阅读 · 0 评论 -
Chrome页面渲染的GPU加速技术 - 基础:WebKit软件渲染模式
参考来源:http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chromeWebKit的渲染引擎代码非常复杂,文档又比较欠缺。为了易于理解Chrome中GPU加速渲染的工作原理,最好先了解一下WebKit如何来渲染页面的。我们先从非GPU加速的渲染来进行介绍,然后在此基础上翻译 2012-11-09 10:29:03 · 7452 阅读 · 0 评论