自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

常海龙的blog

A day is a miniature of eternity

  • 博客(40)
  • 收藏
  • 关注

原创 博客停止更新

<br />本博客不再保持更新,今后所有文章均发表在独立博客http://www.hailongchang.org上,欢迎大家访问!

2010-11-23 12:24:00 819 1

原创 Visual Studio 2005 IDE反应慢的解决办法

最近的一个项目一直在用Visual Studio2005开发,目前的代码量还不到10000,但是IDE已经慢的忍无可忍了,有时候边写代码边恨恨地想着,干脆脱离IDE,用makefile算了。这Visual Studio2005的IDE性能低一直是其被人诟病的主要原因,而我最近的一个项目一直在其上开发,随着最近代码量的激增,Visual Studio2005已经不再影响心情了,而是开始影响工作了,用两分钟就能失去响应。要不是时间紧张,用makefile的心都有了,下午清闲了一小下,上网一搜,原来已经有了解决办

2010-06-04 16:42:00 2017

原创 用Perl实现一个批量文件转码工具

前几天在看Ultimate_ToolBox的源代码,从codeproject上down下来一编译,一堆错误,发现是由于编译器无法识别ISO-8859-1编码,误读有关字符造成的,所以立即着手准备转换程序源文件编码,google了一把,也下了两个小软件,但是都没有批量转换功能,而有这功能的又不支持从ISO-8859-1到UTF-8的转换,于是想到从前在FreeBSD下UTF-8和GB2312互相转换

2010-03-31 15:30:00 2280

原创 用程序网上投票参赛获奖

    年前佳能公司网站举办了一个星光宝贝的评选活动,通过网络投票和评委评选确定最终获奖的星光宝贝。    一位同事正好参加了这个活动,发动大家为她千金投票,可惜通过网页投票速度很慢,佳能公司对投票数也有限制,一个IP地址24小时内只能投10张票,并且每投一次,都要输入不通的验证码。投过一次票后,我发现这些验证码是纯数字,还没有燥点,应该可以用程序自动识别,实现无人干预下的自动投票。

2009-03-18 16:56:00 1372 1

原创 用shell脚本批量连续更改FreeBSD主机ip

年前写过一个自动投票的小程序,因为对方的网站限制为一个ip地址一天只能投10票,所以这个自动投票的程序在设计初期主要是通过代理服务器投票,后来同事提供了局域网内的30个ip地址,虽然自动投票的代码已经完成了,但是在windows下手动更改ip,真的很累人,而windows的WMI编程又不会,最后找到一台不用的FreeBSD机器,写了个脚本,并配置为每天凌晨12点后运行,效果很好。更改ip地

2009-02-03 12:01:00 2999

原创 Unix下UTF-8和GB2312互相转换的函数

    在windows下进行utf-8和gb2312相互转化的代码网上流传了很广了,因为实现里面使用了两个windows函数(WideCharToMultiByte 和 MultiByteToWideChar),在Unix下编程就没有办法使用了,上网google研究了下,发现在Unix下就是对iconv库功能的调用,非常简便。    详细的信息,可以man 3 iconv查看,这里列

2008-12-24 14:26:00 5215 7

原创 隐藏Windows系统托盘图标(改进版)

    在上一篇文章中,写了一个sample,用于隐藏图标,但是有网友提出,能不能在程序界面上显示当前的托盘图标,这样更直观一些。这一点我也曾想到过,也知道奥秘就在TBBUTTON这个结构体的dwData域里面,可惜这个域的结构在MSDN中没有描述。我也曾试着发送TB_GETIMAGELIST消息获取image list的句柄,然后用CImageList::FromHandle加载到C

2008-12-10 14:17:00 8201 14

原创 隐藏Windows系统托盘图标

    曾经写过一篇Windows下的任务栏图标编程,其实那篇文章讲的是如何将我们自己的程序最小化到托盘并进行操作的编程方法。前两天看到论坛里有人讨论如何隐藏托盘图标,记得从前为朋友写过一个隐藏大智慧软件的程序,采用的方法就是将窗口最小化并隐藏大智慧在托盘上的图标,但是因为涉及到键盘钩子,最后并没有这么做,而是用添加一个虚拟桌面的方法达到了效果。    看到这篇帖子,依稀想

2008-12-05 18:06:00 10935 6

原创 在FreeBSD中自动配置声卡

    在FreeBSD中要使用声卡,首先要将声卡的驱动程序加载进系统,但是机器究竟需要使用什么样的声卡驱动程序却是一个问题,按照相关手册中的介绍,我们可以输入这样的命令:# kldload snd_driver &    然后您会发现,声卡确实能够工作了,可一旦重启机器后,仍然得要输入这个命令才能让声卡继续工作,怎么才能够不用这么麻烦呢?如果您已经能够听到声卡发出的声音了

2008-12-02 12:00:00 2503

原创 用awk下载优酷视频

        awk是一种优秀的文本处理工具,用它来处理文本中的数据非常方便。我们现在用的绝大部分是gawk,也就是gnu awk,gnu的软件一贯表现不错,跟其他AWK的实现版本比起来,gawk添加了对网络的支持,比如我可以用awk模拟发送http请求给浏览器,然后用正则表达式过滤网页内容,例如这里是一个awk和sed搭配获取五大联赛计分表的shell程序。        gawk

2008-11-20 15:22:00 3771 12

原创 用shell script查看五大联赛积分表

        平时很少能有时间和精力收看五大联赛的直播,可还是比较关注赛程赛况,但是上网查看信息,要点很多链接,上周写了一个用awk来下载YouTube视频的程序,这次仍然想用gawk提供的网络功能完成这样一个程序,但是遇到了不小的困难,例如我需要在BEGIN过程中获取排名信息的网页,并利用regular expressions对该网页进行多次过滤。于是想到用sed与awk的组合来完成这项工作,

2008-11-17 14:46:00 3353

原创 手工打造一个QQ空间备份工具

         开放API成了当下社区里的热点,一直以来很想备份一下自己在QQ空间里面的文章,然而腾讯却不开放相关的API,所以只好另辟蹊径了。在网上搜索了下Qzone和rss,没想到还真有结果,原来QQ空间的最新文章列表都存储在下面这个xml文件:        http://feeds.qzone.qq.com/cgi-bin/cgi_rss_out?uin=YourQQNumb

2008-06-26 11:09:00 2841 2

原创 一个带命令行解析功能的console程序框架

          这个程序的代码对于很多linux程序员应该是很熟悉的,仿照linux实现了命令行参数解析器,所以提供一个框架程序,以后再写类似代码的时候直接在本框架的基础上修改就是了。#include "GetOpt.h"#includeusing namespace std;const char* program_name;

2008-06-20 11:11:00 2413

原创 一个命令行参数解析器

    因工作需要写一个console工具程序,运行参数很多,记得linux下有一个系统函数getopt可以很好得帮助程序员解析命令行参数,但是在VC中没有这个函数,研究了下linux中对该函数的帮助信息和头文件getopt.h,重新实现了getopt和getopt_long这两个函数,因为没有读过linux下getopt这个函数的源代码,所以这个函数肯定不够完善,不过经过试用,还是能够满足我个人

2008-06-20 11:00:00 7039 5

原创 一个虚拟桌面程序的实现

        前几天为朋友写了一个小工具,主要是为了做到一键隐藏大智慧炒股软件,第一个版本是利用窗口查找,然后向窗口发送WM_SHOW消息完成的。实现原理虽然简单,但是不具备通用性,按我最初的设想要一键隐藏什么软件应该由用户定义,而不是每次都要定制。于是这个小工具的第二个版本诞生了,那就是为用户虚拟一个桌面,然后在虚拟桌面启动explorer进程,用户可以用"ALT+Q"来切换现有桌面与这个虚拟

2008-06-17 10:02:00 8600 4

原创 MFC中如何读取.ini配置文件

          这是从最近做的一个图像采集模块中抽出来的代码,用来读取可执行文件当前目录下的图像卡配置文文件MonitorCard.iniint m_ScanMode    = (int)GetPrivateProfileInt("Video Parameter", "Scan", 100, "./MonitorCard.ini" );int m_VideoStandard   = (

2008-04-14 16:58:00 4410

原创 MFC中将bmp格式图片改为Jpeg格式图片的简单方法

这是从最近写的一个图像采集软件中取出来的代码片段:     CString fnBmp = FileName + ".bmp";                            //指定了bmp图片的文件名    SaveBMPFile(fnBmp, pBmpInfo, pImageBuffer);        //保存bmp图片    CImage im;          

2008-04-02 12:22:00 3364 1

原创 MFC中如何创建真正全屏的对话框

//MFC用于显示全屏dialog的代码,请事先将dialog的title bar属性设置为false CRect m_FullScreenRect; int nFullWidth=GetSystemMetrics(SM_CXSCREEN); int nFullHeight=GetSystemMetrics(SM_CYSCREEN); m_FullScreenRect.left = 0; 

2008-04-02 11:01:00 7033 1

原创 MFC中如何创建固定大小的窗口

创建固定大小的窗口:方法一:在your_project_name.cpp中,m_pMainWnd->ShowWindow(SW_SHOW)之前加入下面的语句:::SetWindowLong(m_pMainWnd->m_hWnd,                                GWL_STYLE,WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU);

2008-04-02 10:59:00 3983

原创 MFC中存取Access数据库的一般方法

#include afxwin.h> #include afxdtctl.h>                                   // Internet Explorer 4 公共控件的 MFC 支持#includeiostream>#import "c:Program FilesCommon FilesSystemadomsado15.dll" no_namespace r

2008-04-02 10:50:00 4985

原创 WIN32串口编程

串口编程实际很简单,测试要相对麻烦一些,在单机情况下可以利用串口监控软件来测试发送数据的程序将双机串口互连,可以测试接收数据的程序。下面是读取和发送数据的sample。//串口编程:读取串口com3数据的程序#include #includeint main(int argc, char *argv[]){  HANDLE hComm3; hComm3 =CreateFile(

2007-06-11 10:03:00 1259

原创 Windows下的任务栏图标编程

针对任务栏图标的编程不外乎就下面这么几点:1:在任务栏添加,删除图标2:在任务栏图标上点击鼠标,弹出菜单3:当鼠标在任务栏图标上hover的时候,弹出Balloon Tip.这是程序被最小化到托盘后的效果图:下面的程序就是用来演示上面这三个方面的。 void CnidDlg::OnBnClickedOk(){     //////////////////////////////////////

2007-05-22 16:48:00 3646

原创 深入剖析变长参数函数的实现

什么是变长参数?所谓含有变长参数的函数是指该函数可以接受可变数目的形参。例如我们都非常熟悉的printf,scanf等等。2:变长参数如何实现?首先来看下面这样一个例子:#include#include#includevoid demo(char *msg,...){ va_list argp; int arg_number=0; char *para = msg; va_

2007-05-15 12:13:00 4574 1

原创 用c#实现开机自动运行

 从前用native API实现过程序开机自动运行,前几天刚好要用到,就用c#重写了,基本原理都是一样的。RegistryKey KeyCon=Registry.LocalMachine.OpenSubKey("Software//Microsoft//Windows//CurrentVersion//Run",true);string MyKey= "Terminal"; if((str

2007-05-14 10:19:00 1810 1

原创 c#对sql server的基本操作

         早晨迫于生计,对自己进行了一次数据库操作得扫盲工作,避免以后重新忘记,记录在此。//对数据库进行连接的代码using System;using System.Data.SqlClient;namespace DBconnective{ ///  /// Class1 的摘要说明。 ///  class Class1 {  ///   /// 应用程序的主入口点。  ///  

2007-05-11 12:15:00 1268

原创 Emacs:顺手就好

         两年多了,这份配置文件竟然没有增长,这在某些狂热的Emacs原教旨主义者的眼里简直是一种大逆不道的行为。但是君子之交淡如水,Emacs绝对是要一生拥有的editor,但是它也仅仅是一个editor,虽然很多额外的工作都能够在Emacs中完成,但我只信奉一个原则:顺手就好。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

2007-04-20 12:43:00 1088

原创 一到逻辑题的编程解答

上个星期在csdn论坛上看到的一道逻辑题(http://community.csdn.net/Expert/topic/5412/5412984.xml?temp=.2942469)有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。A说:不是我。B说:是C。C说:是D。D说:他胡说。(有一个人说的是假话)这样子的题怎么编程呢?----------------

2007-03-26 14:23:00 1332

原创 编程创建文件夹的简单方法

从前那样用CreateDirectory一级一级创建文件夹的方法很是麻烦,现在用SHCreateDirectoryEx一条语句就搞定下面是一个简单的示例:#include//注意这里一定要加shlobj.h#include                                                           int WINAPI WinMain(HINST

2007-01-16 17:58:00 4388

原创 关于Unicode几点疑问的总结

What is Unicode?Unicode provides a unique number for every character,no matter what the platform,no matter what the program,no matter what the language.以上是unicode在www.unicode.org上的 定义。以下是我的几点疑问:

2007-01-15 14:51:00 1433

原创 printf()函数的执行机理

最近在论坛上看到很多人对下面这样的程序有疑问:#include int main(int argc, char *argv[]){ printf("%d"); return 0;}首先认为这样写有错误,其次认为这样打印出来的值是不确定的。其实这是对printf函数执行机理的不理解,下面我就结合源代码来对printf执行的机理进行一点必要的解释。首先我们看这样一个程序:#incl

2007-01-15 11:47:00 3193

原创 Visual C++ MFC程序中调试宏的使用

1:TRACE 确保TRACE宏可用:vs->tools->MFC Tracer中enable tracing框被选中。 下面是一段示例代码: #include "stdAfx.h"int APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                    

2007-01-12 12:43:00 1749

原创 对几种函数调用约定的总结

  在DLL的调用中,要特别注意调用约定的不同,在windows中,有__cdecl,__stdcall,__fastcall等几种调用约定。#include int fun();int main(int argc, char *argv[]){  printf("this is a local variable:%d",fun(2,3,1)); return 0;}int fun(int

2007-01-12 12:15:00 1984

原创 可变参数宏的一种实现:(Macros with a Variable Number of Arguments)

可变参数宏的一种实现:(Macros with a Variable Number of Arguments)在C99中,宏可以象函数一样,带有可变参数。宏的语法和函数的语法类似。下面有个例子:#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)但是现在就我所知道的情况,还没有哪个编译器支持C99标准,所以上面

2006-12-28 17:43:00 1088

原创 在DLL中产生对话框的方法三(C# DLL)

     前面讲了MFC Regular Dll中产生对话框的方法,还有一种MFC Extention Dll,但是因为他本身有很多限制,已经有被淘汰的趋势,所以最好采用Win32 Dll或者MFC Regular Dll,当然最简单的方法还是接下来的C# Dll,因为所有的一切都已经被封装到.net framework中了,什么窗口过程,什么句柄,消息循环等等都不用我们操心了,唯一的缺点是需

2006-12-26 13:31:00 3230

原创 在DLL中产生对话框的方法二(MFC Regular DLL)

   在MFC Regular Dll 中创建modal对话框    在MFC Regular Dll中创建modal对话框非常简单,Cdialog基类提供有一个方法DoModal(),能够创建一个modal对话框,因此在MFC Regular Dll中创建modal对话框,仅仅需要自己继承对话框基类,在导出函数中调用DoModal就可以了.  在MFC Regular Dll 中创建

2006-12-26 11:46:00 6876

原创 在DLL中产生对话框的方法一(Win32 DLL)

    什么是Dll?     Stands for "Dynamic Link Library." A DLL (.dll) file contains a library of functions and other information that can be accessed by a Windows program. When a program is launched, link

2006-12-19 12:46:00 10345 1

原创 补充:测量程序运行时间的几种方法

     在从前写的一篇blog中,我介绍了测量程序运行时间的方法,其中在讲到基于Timer的测量方法时,介绍了一个Win32函数QueryPerformanceCounter(),其实使用这种这个函数比起嵌入汇编的方法还是方便很多,但是也容易引起一些问题。下面是一段示例代码.LARGE_INTEGER freq;LARGE_INTEGER startTime, endTime;LARGE_I

2006-12-15 16:46:00 4830

原创 测量程序运行时间的几种方法

很久之前写的一篇文章了,现在趁着搬家,把它移过来,尽管不够全面,但是一般意义上的工作够用了。测量程序运行时间的几种方法 前一段时间在做一个优化程序性能的项目,为了测试优化的程度,粗略学习了一些测量程序运行时间的技术,www.amazon.co.uk/Computer-Systems-Programmers-Randal-Bryant/dp/013034074X在这个方面几乎没有可以参考的

2006-12-13 11:13:00 8351

原创 为SHBrowseForFolder 设置默认的文件夹

   SHBrowseForFolder是一个windows shell函数,可以以目录为单位进行浏览,其函数原型为:               LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFOlpbi);  参数lpbi是一个指向结构BROWSEINFO的指针,该结构的定义如下:  typedef struct _browseinfo {    H

2006-12-12 11:01:00 6768 1

原创 C#中实现动态加载dll库

    C#中要使用动态链接库中的导出函数,只能在程序中根据DllAtribute显示调用,无法在运行阶段动态加载,但是我们可以利用WIN32 API的LoadLibrary和FreeLibrary打到目的,问题是根据GetProcAddress()函数获取到的导出函数的地址无法在C#中利用,网上很多方法多是利用对函数调用栈的操作来达到在C#中操作的目的.    其实如果导出函数没有返回值,完

2006-12-12 10:55:00 5526 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除