- 博客(224)
- 资源 (31)
- 收藏
- 关注
转载 Detours使用说明
Detours使用说明 1 介绍2 Detours API hook2.1 hook DLL 中的函数2.2 hook自定义c 函数2.3 hook类成员函数2.4 DetourCreateProcessWithDll2.5 Detouring by Address 1 介绍 Api hook包括两部分:api调用的截取和api函数的重定向。通过api
2013-12-05 15:33:06 4266
转载 C++接口的设计——析构函数
接口不应该有实体函数,即接口的所有函数都应该是公共的纯虚函数。不过析构函数应该不应该是纯虚函数呢?如果是非纯虚的虚函数,那函数体要写什么呢?答案是什么都不写,内容为空的函数很不简洁,不爽。那就设置成纯虚函数,很遗憾,编译通不过,因为子类会调用父类的析构函数,父类析构函数指针不应该为空。那就考虑设置成普通函数吧,还可以省去声明,因为C++默认实现析构函数!一个显而易见的问题,当delete接口时只是
2013-11-15 11:13:37 5413 1
原创 做一个优雅的程序员—《程序员修炼之道》读后感
之前读过的一本书,摘录些内容和感想和大家分享。这本书英文名字是:《The Pragmatic Programmer》,译名为《程序员修炼之道》,直译为《注重实效的程序员》。这是一本讲编程哲学的书,内容覆盖非常广泛但又言简意赅,300页的篇幅可谓全部是浓缩的精华。不知道你读过以后会不会像我一样顿觉相见恨晚、想一读再读?
2013-10-07 12:55:36 10163 3
转载 你真的懂任务管理器中有关内存的参数Private(提交大小)和working set(工作设置)吗?
任务管理器中跟内存相关有两个重要的指标Private(提交大小)和working set(工作设置)。如下图所示:这两个指标在process explorer中叫做Private Bytes和Working Set。而在VMMap中,他们则分别被叫做Private和Total Working Set。我这里也用Private和working set来称呼他们。
2013-09-17 18:09:06 4601
转载 浅学设计模式之简单工厂模式、工厂模式、抽象工厂模式
原文:http://blog.csdn.net/lilu_leo/article/details/7592678一、简单工厂 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是
2013-09-17 15:49:23 3606
原创 【深入QT】信号槽机制浅析
一、信号槽的基本概念关于QT信号槽的基本概念大家都懂,通过信号槽机制,QT使对象间的通信变得非常简单:A对象声明信号(signal),B对象实现与之参数相匹配的槽(slot),通过调用connect进行连接,合适的时机A对象使用emit把信号带上参数发射出去,B对象的槽会就接收到响应。 信号槽机制有一些特点:1. 类型安全:只有参数匹配的信号与槽才可以连接成功(信号的参数可
2013-09-01 00:22:59 26797 2
转载 指定Webbrowser控件所用IE内核版本
如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容。解决方法是在注册表中为你的进程指定引用IE的版本号。比如我的程序叫做a.exe对于32位程序HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROW
2013-06-28 15:43:20 38077 7
原创 在C++中用C#风格设置类的属性值
想要实现的效果就是如下这样获取和设置类的属性:class A{private: int x;};A a;a.x = 1;int b = a.x;借助VC编译器所支持的属性声明即可实现:__declspec( property (put=setFunction, get=getFunction) ) data-type property-name; 通
2013-05-16 15:46:31 2873
原创 实现类非静态成员函数做窗口过程函数
实现类非静态成员函数做窗口过程函数,无非是想办法把类对象指针传递给窗口过程。最简单的办法是使用全局变量,在很多场景下是快捷有效的办法。这里介绍的办法是借助::SetWindowLong(hWnd, GWL_USERDATA, (LONG)pWindow)调用,把类指针传递给窗口。在窗口过程函数中再调用 GetWindowLong来获取出来使用。通过CreateWindowEx最后一
2013-04-16 14:22:58 3760
原创 对话框窗口过程与普通窗口过程的区别
对话框窗口是指通过CreateDialog,DialogBox 这些API创建的窗口,其中DLGPROC与普通窗口有一些区别。HWND WINAPI CreateDialog( _In_opt_ HINSTANCE hInstance, _In_ LPCTSTR lpTemplate, _In_opt_ HWND hWndParent, _In_opt_ D
2013-04-16 13:54:19 5383
转载 public private 和protected 继承
在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public继承是最为常用的一种继承关系,private继承是最少见的继承关系。1. public从语义角度上来说,public继承是一种接口继承,根据面向对象中的关系而言就是,派生类可以代替基类完成基类接口所声明的行为,也就是必须符合“Liskov替换原则(LSP)”,此时派生类可以自动转
2013-02-06 11:30:01 2781
转载 C#技术漫谈之垃圾回收机制(GC)
原文地址:http://kb.cnblogs.com/page/106720/摘要:今天我们漫谈C#中的垃圾回收机制,本文将从垃圾回收机制的原理讲起,希望对大家有所帮助。 GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功
2013-01-04 10:02:45 2677
原创 [cpp-netlib]自行处理chunked编码的回包
使用下面这个函数代替原body函数。std::string chunked_body(boost::network::http::client::response& response){ std::string body; std::string partial_parsed = boost::network::http::body(response); auto t
2012-12-29 17:17:05 3676
原创 [cpp-netlib]如何发送post请求
int CHttpFetch::Post(const CString& strURL, const CString& strContent, CString& strResponse){ int nStatus = 200; try { http::client::request request(StringUtility::CStr2Stl(strUR
2012-12-29 17:14:22 5997
转载 23种设计模式及解释(中英文对照)
设计模式是每个程序员的必修课,这里将23种模式整理在一起,想学习这方面知识的朋友们有福了,呵呵。Singleton Pattern(单例模式):Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)
2012-11-24 15:54:14 3258
转载 C++转向C#的疑惑:难道C#中没有拷贝构造函数 ?
不可否认,C++在过去十年乃至现在一直都是windows平台上的主流开发语言,而来势凶猛的.NET势必开辟一个崭新的局面,从目前的种种迹象来看,.NET是大势所趋,而C#作为.NET平台上的第一开发语言自然备受关注,于是有很多程序员纷纷转向C#,这其中当然不乏C++程序员。情况往往是这样,从一种语言过渡到另一种语言,哪怕是比较相似的语言,程序员也经常无意识地陷入原开发语言的思维定势,这样的结果通常
2012-11-23 01:33:34 3144 1
原创 在Visual Studio中使用VMWare插件进行远程调试
远程调试大家都不陌生,连接到虚拟机调试也大同小异。连接虚拟机是因为有些Bug只在XP机器上出现,在Win8的开发机上无法进行调试。这里要介绍的是用VMWare(9.0版本)自带的VS插件来简化整个调试过程。下图就是VMWare插件,按钮功能包括Debug,Attach等,最右的扳手是设置虚拟机。 在VMWare中配置虚拟机(XP系统)1. 创建新管理员账号,用户名密码和主机相同
2012-11-17 13:41:23 13229
转载 什么是窗口子类化
如果你曾经在 Windows 环境下编过程序,有时候就会发现:有一个现成的窗口,几乎有你所需要的全部功能,但还不完全一样。如果你需要一个具有过滤特殊字符功能的 Edit 控件。当然最直接的方法就是自己用代码来实现,但这的确是一个费时又很困难的任务,而子类化就可以用来做这种事情。 子类化允许你接管被子类化的窗口,使你对它有绝对的控制权。举个例子了来阐明一下:例如你需要一个只接受十
2012-11-15 20:29:54 3625
转载 VBScript脚本无法运行的解决方案
原文:http://www.cppblog.com/Streamlet/archive/2012/10/25/193835.html 感谢溪流漫话的投递现象——运行任何 .vbs 脚本,Windows Script Host 提示 找不到脚本“xxx.vbs”的脚本引擎“VBScript”。网页中的 vbscript 脚本无响应,也无任何报错。
2012-10-25 14:17:09 11032
转载 IE保护模式下ActiveX控件打不开共享内存的解决方案
原文:http://www.cppblog.com/Streamlet/archive/2012/10/25/193831.html 感谢溪流漫话的投递IE保护模式下,ActiveX控件会打不开别的进程创建的共享内存,原因是IE运行在低完整性级别权限下,一般应用程序运行在中完整性级别。别的应用程序创建的共享内存,即使赋予Everyone权限,ActiveX控件仍然会打不开。解决方案
2012-10-25 14:16:21 4464
原创 如何设置ListViewCtrl的最小列宽(How to set a minimum column width)
NOTIFY_CODE_HANDLER(HDN_TRACK, OnColumnDraging)NOTIFY_CODE_HANDLER(HDN_ITEMCHANGING, OnColumnDraging)LRESULT CListViewComponent::OnColumnDraging(int wParam, LPNMHDR lParam, BOOL &bHandled){
2012-10-11 12:37:20 1843
转载 利用boost提供的库构建读写锁与互斥锁
原文地址:http://herojiang.iteye.com/blog/432394boost库中提供了的mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁。 一种简易的构建方法如下: 首先看看mutex类,主要用到下面两种. mutex类: boost::mutex, boost::shared_mutex 其中mutex主要有lock与unloc
2012-09-20 11:35:08 5620 1
原创 cpp-netlib 如何编译
http://cpp-netlib.github.com/latest/index.htmlcpp-netlib是一个不错的http库,boost可能会引入这个库,但在Windows下编译这个库要自己修改一下编译脚本,很废周折。这里把解决的办法贴一下,顺便预祝这个库早日被boost收录,能更好的维护起来,起码编译这么基础的功能要完善。我的环境:boost_1_47_0 cpp-ne
2012-09-14 02:29:00 7725
原创 半透明窗口中显示标准控件(控件与文字不透明)的实现方案(附源码)
和大家分享一下在半透明窗口中显示标准控件的实现方案。通过层叠窗口可以简单实现半透明与不规则形状窗口的效果,但在其上显示标准控件(控件与文字不透明)却是件比较有挑战的事情,这里会给出一个可行的解决方案。同时实现了一些可重用的窗口类,有相关需求时可以进行引用。先看一下效果图:一、半透明窗口实现原理绘制半透明窗口的通常做法是为窗口设置WS_EX_LAYERED属性,通过Updat
2012-08-25 16:42:08 14359 8
转载 怎样在虚拟机linux操作系统中安装vmtools
转自:http://jingyan.baidu.com/article/380abd0aae0b3f1d91192c57.html 很多用户在测试linux操作系统的时候喜欢用虚拟机,因为虚拟机方便而且可以同时在一台PC机上虚拟出来不同版本的linux操作系统,但是虚拟机和物理机之间的文件传输倒成了个问题,有人说可以使用vmtools吗,小编当然知道,但是怎样在linux操作系统中安装它倒
2012-08-22 16:44:34 1595
原创 如何获取系统任务栏位置
下面的代码用来判断任务栏位于屏幕的下方、下方、左侧还是右侧。APPBARDATA taskbar = {0}; taskbar.cbSize = sizeof(APPBARDATA); SHAppBarMessage(ABM_GETTASKBARPOS, &taskbar);switch(taskbar.uEdge){case ABE_BOTTOM: break;ca
2012-08-22 16:14:35 2925
原创 Debug依赖的CRT、MFC库、ATL库、OpenMP库文件
在没有安装开发环境的电脑上运行Debug版本的程序,需要拷贝相关文件到目标机。以VS2012为例,这些依赖文件在以下位置:C:\Program Files\Microsoft Visual Studio 10.0\VC\redist
2012-08-22 16:05:20 2294
转载 如何在技术面试中脱颖而出(上)
原文地址:http://blog.jobbole.com/24937/在过去5年中,我面试了数百名IT工程师,我认为很值得把我的面试IT工程师的经验同大家分享。这能够:●帮助人们为他们的下一个面试准备●帮助IT工程师找到合适的工作。●帮助IT工程师创造更好的环境。我们通过两个方面面试IT工程师:●技术技能:包括理论和实践技能以及经验等。
2012-08-21 23:42:58 1597
原创 用Python打印乘法口诀表
for i in range(1, 10): print " ".join(["%d*%d=%d" % (j, i, i*j) for j in range(1, i+1)])
2012-08-21 14:03:40 8042
原创 免注册COM的使用方法
COM对象的传统创建方法,会依赖于注册表,所有应用程序都会依赖到同一个版本的COM。如果不同程序依赖的COM版本不同,而这个COM的版本兼容又没有做得很好的时候,就会出现DLL Hell问题。微软在多年前就提供了一个Reg-free COM的方案,现在的VS也很好的集成了这个功能。 免注册COM的实现原理是把依赖到的COM类型与接口信息存储在本地的清单文件(.manifest)中,由它
2012-08-20 22:36:07 5475
转载 HTML链接和Web书写URL之处理保留字符和不安全字符
除了那些无法显示的字符外,还需要在URL中对那些保留(reserved)字符和不安全(unsafe)字符进行编码。 所谓保留字符就是那些在URL中具有特定意义的字符。例如,在URL中用于分隔路径名中各元素的斜线字符。 如果需要在URL中包含一个斜线,而不希望将该斜线当作分隔符使用,那么可以将其编码为%2F(注3): http://www.
2012-08-20 15:33:43 3748
转载 使用rebase进行dll基地址重定位
假设有3个模块,一个user.exe,另外两个是A.dll,B.dll。 在编译链接各个模块时,我利用VS默认的base address,这样user.exe的默认基地址是0x00400000h,A或B的基地址是0x10000000h。这样,当加载器加载User.exe(它同时隐式链接A,B)。这样,A,B就会有一个被迫改变默认的基地址;从而导致映像文件里的机器代码指令(包含的硬编码地址)与加
2012-08-20 14:27:04 2339
转载 HTTP、TCP、UDP、Socket
先来一个讲TCP、UDP和HTTP关系的1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。
2012-08-17 22:08:48 7441
转载 Python的异常处理机制
当你的程序中出现异常情况时就需要异常处理。比如当你打开一个不存在的文件时。当你的程序中有一些无效的语句时,Python会提示你有错误存在。下面是一个拼写错误的例子,print写成了Print。Python是大小写敏感的,因此Python将引发一个错误:>>> Print 'Hello World' File "", line 1 Print 'Hello World'
2012-08-16 00:34:02 54808 2
原创 【QC开发相关】解决无法创建TDConnection(OTAClient.dll中提供)对象的问题(错误0x800703e6)
在使用VS2008、VS2010开发C#程序时,使用OTAClient.dll做一些QC相关操作,会遇到创建TDConnection失败的情况,错误码是0x800703e6。具体错误信息为:System.BadImageFormatException: Retrieving the COM class factory for component with CLSID{C5CBD7B2-49
2012-08-14 16:02:56 6522 1
原创 解决调用dumpbin.exe、editbin.exe等工具mspdb100.dll 找不到的问题
1. 打开普通命令行窗口,先运行vc/bin/下的vcvars32.bat更改当前目录,再调用这些工具2. 使用VS提供的命令行窗口。
2012-08-14 15:51:17 3871
转载 pysvn - Programmer's reference
pysvn - Programmer's referenceThis programmer's reference gives complete and detailed infomation on the pysvn API.The pysvn Programmer's Guide gives an tutorial introduction to the pysvn modul
2012-08-13 13:12:32 10521 1
原创 把Python脚本打包成exe文件 ——py2exe使用小记
一、相关资源py2exe官方网站:http://www.py2exe.org/py2exe使用指南及历史安装包:http://www.py2exe.org/old/支持Python2.7的版本:http://prdownloads.sourceforge.net/py2exe/py2exe-0.6.9.win32-py2.7.exe?download二、进行打包
2012-08-13 00:30:54 17025 1
转载 py2exe使用方法 (含一些调试技巧,如压缩email 类)
一、简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。 py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。py2exe是发布
2012-08-12 23:25:22 2970
转载 python中那纠结的os.system()与空格处理
原贴地址:http://www.cnblogs.com/ini_always/archive/2011/09/26/2192205.html今天在写一个用来对vmware workstation虚拟机进行操作的小脚本,主要原理是用python来调用vmrun.exe,传递各种不同的参数给它,来进行不同的操作。原理很简单,实现。。。其实也很简单,你会说:不就是一个os.s
2012-08-12 15:44:01 9264 2
半透明窗口中显示标准控件(控件与文字不透明)的实现方案
2012-08-25
py2exe-0.6.9.win32-py2.7
2012-08-12
MFC中更改鼠标指针图标的示例代码
2011-09-11
提取文件图标工具源码(C++),保存成透明背景的PNG图片。
2011-08-17
用boost::property_tree来解析XML,JSON的示例代码。
2011-07-25
一分钟学会用C++调用Web Service Demo程序源码
2011-07-08
Programming the Microsoft Windows Driver Model 1st Ed 中文版
2009-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人