自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

benny5609的专栏

人生,到世上走一遭,只不过是单纯的体验与学习认识,当我们在临死的时候,可以光荣地对自己说:"我已领略过"便不枉此生。

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

原创 ATL Windowing中的汇编:_stdcallthunk分析

1. 指令指针寄存器与正在执行指令指针关系: I:                      CPU正在执行指令; xIP:                  CPU指令指针寄存器内容; xIP(I):              CPU正在执行的指令I的指针; LEN(I):            指令I的长度。 1)顺序执行:xIP = xIP(I) + LEN(I)

2008-06-30 11:09:00 1825

原创 常用的API画图形函数

1.设定图素SetPixelGetPixel2.画线LineTo 画直线。Polyline和PolylineTo 画一系列相连的直线。PolyPolyline 画多组相连的线。Arc 画椭圆线。PolyBezier和PolyBezierTo 画贝塞尔曲线。ArcTo和AngleArc 画椭圆线。PolyDraw 画一系列相连的线以及贝塞尔曲线3.既画

2008-06-30 08:17:00 3811

原创 VC点滴

1.图像变灰2008/6/27COLORREF cr = ::GetPixel(hDC,i,j); int nR = GetRValue(cr); int nG = GetGValue(cr); int nB = GetBValue(cr); //int nPer= (nR+nG+nB)/3;  //这两种方法,肉眼确实很难看的出差别int nPer = nR*0.299 + nG*0.5

2008-06-27 10:42:00 1098

原创 WTL点滴

1.2008/6/25 改变Dialog背景MSG_WM_CTLCOLORDLG(OnCtlColorDlg) LRESULT OnCtlColorDlg(CDCHandle dc, CWindow wnd) {    return (LRESULT)AtlGetStockBrush(BLACK_BRUSH);   } 2.Reverse A String by STL str

2008-06-25 23:23:00 828

原创 3000阶乘_大数相乘

#include #include #define STRMAX 2000#define P 100000#define N 3000int main(){long t[STRMAX]={0},a,b,c,g=0,x,e,p=P;t[STRMAX-1]=1;for (e=1;

2008-06-25 22:53:00 1575

原创 VC编译选项

本来只想找与RTTI相关的,既然找到了这么多,就都记着吧:) -优化- /O1 最小化空间 minimize space/Op[-]改善浮点数一致性 improve floating-pt consistency/O2 最大化速度 maximize speed/Os 优选代码空间 favor code space/Oa 假设没有别名 assume no aliasing

2008-06-23 15:02:00 844

原创 ASM的学习笔记

1.2008/5/13 补码:正->最高位零+数的绝对值      负->最高位壹+2^n -数的绝对值2.负数补码-->正数转二进制-->取反-->末位+1 3.符号扩展:    正-->高位全填零+补码    负-->高位全填壹+补码4.求补:各位取反+壹  求补=它的负数,再求补=它本身5.补码加减法-->A补+B补  或A补+(-B)补6.2008/

2008-06-22 17:24:00 1444

原创 一面墙改变一个人的命运

沃尔顿收到了著名的耶鲁大学的录取通知书。但是,因为家穷,他交不起学费,面临失学的危机。他决定趁假期去打工,像父亲一样做名油漆工。   沃尔顿接到一笔为一大栋房子做油漆的业务,尽管房子的主人迈克尔很挑剔,但给的报酬很高。沃尔顿很高兴地接受了这桩生意。在工作中,沃尔顿自然是一丝不苟,他认真和负责的态度让几次来查验的迈克尔感到满意。这天,是即将完工的日子。沃尔顿为拆下来的一扇门板刷完最后一遍漆,刚刚

2008-06-19 14:57:00 1842

原创 为BCG界面库的记忆特性所晕倒

同事使用BCGControlBarPro处理界面,今天在修改菜单资源时却发生一件很奇怪的事情:无论怎么修改,程序运行后始终显示的还是改动以前的菜单,多次清空临时文件、生成文件以及重新编译也无济于事。同事为此折腾了一个上午,郁闷得不行。我用UltraEdit搜索了一下整个工程,并没有发现以前的字符串资源,因此排除了是编译器的问题。不是编译器的问题,那么就只能是BCG的问题了,我怀疑是BCG对资源

2008-06-18 17:57:00 988

原创 根据文件句柄,获取文件名

#include #include #include #include #include #define BUFSIZE 512BOOL GetFileNameFromHandle(HANDLE hFile) {  BOOL bSuccess = FALSE;  TCHAR pszFilename[MAX_PATH+1];  HANDLE hFile

2008-06-18 16:47:00 1443

原创 半透明渐变的窗口效果

此代码由CSDN 空气提供空 气  15:12:09void CSemiTransWnd::Update(long type,POINT *pTopLeft){    if(m_hWnd&&m_iWidth&&m_iHeight&&m_pdwRGBAData&&m_pDC&&m_pBmp)//指针正确    {        //获取屏幕DC        CDC

2008-06-18 16:35:00 1468 1

原创 我自己的PE文件RVA-VA-Offset心得

#   Name     Virt Size   RVA       Phys Size  Phys Off   Flags  --  -------- ---------  ---------  ---------  ---------  --------- 01  .text     0000CCC0   00001000   0000CE00   00000600   600

2008-06-18 15:19:00 2506

原创 WINDOWS钩子函数

本课中我们将要学习WINDOWS钩子函数的使用方法。WINDOWS钩子函数的功能非常强大,有了它您可以探测其它进程并且改变其它进程的行为。 理论:WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过“钩挂”,您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时,WINDO

2008-06-18 15:10:00 888

原创 困扰80后御宅族的十大烦恼

以下80后御宅族十大烦恼的症候特征,,一般80后都占了三五条,一个80后的朋友更惊呼自己几乎一条不少全占了——  1.成天泡在网上,又不知道做什么好。80后最常说的一句话是“无聊”,尽管他们在网络上聊天花去了大把的时间。  建议:聊天作为一种基本交流方式,所要达到的目的是获得认同。网上聊天很难达到这种认同,所以越聊越无聊。学习和工作累了,玩一玩游戏没错,但是打怪练级那些游戏基本上是得不偿失

2008-06-18 15:01:00 811

原创 不做别人肉鸡吗?简单

于现在家用电脑所使用的操作系统多数为Win XP 和Win2000 pro(建议还在使用98的朋友换换系统,连微软都放弃了的系统你还用它干嘛?)所以后面我将主要讲一下基于这两个操作系统的安全防范。  个人电脑常见的被入侵方式   谈到个人上网时的安全,还是先把大家可能会遇到的问题归个类吧。我们遇到的入侵方式大概包括了以下几种:   (1) 被他人盗取密码;   (2)

2008-06-18 14:51:00 966

原创 软件破解的基础知识

破解离不开工具,合适的工具使你事半功倍,本课主要是介绍几种破解工具,当然详细的用法,参考后面几课及范例。 1.调试工具softice 2.调试工具Trw2000 3.反汇编工具Wdasm8.93 4.Hiew 5.Visual Basic程序调试工具Smartcheck 6.十六进制编辑器(如:Ultraedit、WinHex、Hex Workshop 等) 7.注册表

2008-06-18 14:40:00 2027

原创 VC++实现对远程计算机屏幕的监视

摘要:本文介绍了一种通过套接字网络编程和屏幕捕获技术实现的对远程计算机屏幕进行监视的方法。  关键词:套接字;屏幕捕捉;远程监视;网络   前言  在实际工程中,经常有施工现场和控制中心不在一起的情况,在这种情况一般多由工程技术人员往返穿梭其间来实现对远程施工现场的情况了解和对控制中心的矫正控制。显然这种工作方式的效率是很低下的,没有充分发挥计算机网络的强大优势,其实通过网

2008-06-18 14:37:00 1008

原创 脚本红客联盟:有史以来批处理最完整人性化教程

这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人、一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前。  先概述一下批处理是个什么东东。批处理的定义,至今我

2008-06-18 13:30:00 1926

原创 AutoHotkey 0级入门教程:让重复工作一键完成

AutoHotkey是一个神奇的工具。为了便于新人上手,xbeta写了此篇最最傻瓜的0级入门教程,并被PConline以《演绎段氏"凌波微步" AutoHotkey 0级入门教程》为题转载。 1 何为AutoHotkey  AutoHotkey是一个小工具软件,可以简化你的重复性工作。  比如要登录某论坛,你只要按一个键,AutoHotkey就会替你打开IE(推荐使用FireF

2008-06-17 23:47:00 2047 5

原创 Unix和Windows跨系统通讯编程

Unix和Windows跨系统通讯编程 摘 要 本文介绍了套接字(Socket)的基本概念及编程技术,并结合实例说明在Unix和Windows下如何用套接字实现客户/服务器方式的通讯编程。  关键词 Berkeley Sockets Windows Sockets 

2008-06-17 19:08:00 918

原创 rand、srand及randomize的用法

首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在

2008-06-17 19:00:00 1532 1

原创 深入浅出Win32多线程程序设计之综合实例-5

3.3.5控制接口应用程序员使用下列一组public函数可以获取串口的DCB及串口上发生的事件: //// Return the device control block//DCB CSerialPort::GetDCB(){return m_dcb;}//// Return the

2008-06-17 14:12:00 1182

原创 深入浅出Win32多线程程序设计之综合实例-4

3.3.3核心函数:串口线程控制函数串口线程处理函数是整个类中最核心的部分,它主要完成两类工作:(1)利用WaitCommEvent函数对串口上发生的事件进行获取并根据事件的不同类型进行相应的处理;(2)利用WaitForMultipleObjects函数对串口相关的用户控制事件进行等待并做相应处理。 U

2008-06-17 14:11:00 1045

原创 深入浅出Win32多线程程序设计之综合实例-3

3.多线程串口类使用多线程串口通信更方便的途径是编写一个多线程的串口类,例如Remon Spekreijse编写了一个CSerialPort串口类。仔细分析这个类的源代码,将十分有助于我们对先前所学多线程及同步知识的理解。3.1类的定义 #ifndef __SERIALPORT_H__#define __SE

2008-06-17 14:10:00 946

原创 深入浅出Win32多线程程序设计之综合实例-2

2.工程实例下面我们用第1节所述API实现一个多线程的串口通信程序。这个例子工程(工程名为MultiThreadCom)的界面很简单,如下图所示:

2008-06-17 14:09:00 910

原创 深入浅出Win32多线程程序设计之综合实例-1

本章我们将以工业控制和嵌入式系统中运用极为广泛的串口通信为例讲述多线程的典型应用。而网络通信也是多线程应用最广泛的领域之一,所以本章的最后一节也将对多线程网络通信进行简短的描述。1.串口通信在工业控制系统中,工控机(一般都基于PC Windows平台)经常需要与单片机通过串口进行通信。因此,操作和使用PC的串口成为大多数单片机、嵌入式系统领域工程师必须具备的能力。串

2008-06-17 14:08:00 871

原创 深入浅出Win32多线程程序设计之线程通信

简介  线程之间通信的两个基本问题是互斥和同步。  线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。  线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享

2008-06-17 14:05:00 761

原创 深入浅出Win32多线程程序设计之线程控制

WIN32线程控制主要实现线程的创建、终止、挂起和恢复等操作,这些操作都依赖于WIN32提供的一组API和具体编译器的C运行时库函数。  1.线程函数  在启动一个线程之前,必须为线程编写一个全局的线程函数,这个线程函数接受一个32位的LPVOID作为参数,返回一个UINT,线程函数的结构为: UINT Thre

2008-06-17 14:01:00 839

原创 深入浅出Win32多线程程序设计之基本概念

引言  从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。  理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。

2008-06-17 13:59:00 661

原创 深入浅出Win32多线程设计之MFC的多线程(II)

使用VC++ 6.0的向导完成一个最简单的单文档架构MFC应用程序MFCThread:  (1) 输入MFC EXE工程名MFCThread;  (2) 选择单文档架构,不支持Document/View结构;  (3) ActiveX、3D container等其他选项都选择无。  我们来分析这个工程。下面是产生的核心源代码:  MFCThread.h 文件

2008-06-17 13:56:00 844

原创 深入浅出Win32多线程设计之MFC的多线程(I)

1、创建和终止线程  在MFC程序中创建一个线程,宜调用AfxBeginThread函数。该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程。  工作者线程 CWinThread *AfxBeginThread( AFX_THREADPROC pfnThreadProc, //控制函

2008-06-17 13:55:00 1047

原创 Windows程序设计(第2版)多线程四

2.应用举例下面例子中,主线程通过将事件状态设为“受信”来通知子线程开始工作。这是事件内核对象一个很重要的用途,示例代码如下:#include                                              // 03EventDemo工程下#include #include HANDLE g_hEvent;UINT __stdcall Child

2008-06-17 13:33:00 880

原创 Windows程序设计(第2版)多线程三

3.2 线程同步同步可以保证在一个时间内只有一个线程对某个共享资源有控制权。共享资源包括全局变量、公共数据成员或者句柄等。临界区内核对象和事件内核对象可以很好地用于多线程同步和它们之间的通信。本节将结合各种简单的例子来讨论产生同步问题的根本原因,进而提出相应的解决方案。3.2.1 临界区对象1.为什么要线程同步当多个线程在同一个进程中执行时,可能有不止一个线程同时执行同一段代码,访

2008-06-17 13:32:00 1078 1

原创 Windows程序设计(第2版)多线程二

5.是否受信Signaled成员Signaled指示了线程对象是否为“受信”状态。线程在运行期间,Signaled的值永远是FALSE,即“未受信”,只有当线程结束以后,系统才把Signaled的值置为TRUE。此时,针对此对象的等待函数就会返回,如上一小节中的WaitForSingleObject函数。3.1.3 线程的终止当线程正常终止时,会发生下列事件:l         在

2008-06-17 13:31:00 793

原创 Windows程序设计(第2版)多线程

应用程序被装载到内存之后就形成了进程,这是上一章重点讨论的话题。但是程序在内存中是如何执行的呢?这就涉及到了代码的执行单元——线程。本章就线程的创建、多线程处理展开介绍。本章首先介绍创建线程的方法和线程内核对象,接着详细分析产生线程同步问题的根本原因,并提出一些解决办法。为了扩展多线程的应用和为读者提供更多的实际机会,本章还重点讨论了线程局部存储和CWinThread类的设计,这也是设计框架程

2008-06-17 13:30:00 785

原创 PE教程7: Export Table(引出表)

当PE装载器执行一个程序,它将相关DLLs都装入该进程的地址空间。然后根据主程序的引入函数信息,查找相关DLLs中的真实函数地址来修正主程序。PE装载器搜寻的是DLLs中的引出函数。DLL/EXE要引出一个函数给其他DLL/EXE使用,有两种实现方法: 通过函数名引出或者仅仅通过序数引出。比如某个DLL要引出名为"GetSysConfig"的函数,如果它以函数名引出,那么其他DLLs/EXEs

2008-06-17 13:20:00 743

原创 PE教程6: Import Table(引入表)二

由OriginalFirstThunk 指向的RVA数组始终不会改变,所以若还反过头来查找引入函数名,PE装载器还能找寻到。当然再简单的事物都有其复杂的一面。有些情况下一些函数仅由序数引出,也就是说您不能用函数名来调用它们: 您只能用它们的位置来调用。此时,调用者模块中就不存在该函数的 IMAGE_IMPORT_BY_NAME 结构。不同的,对应该函数的 IMAGE_THUNK_DATA 值的

2008-06-17 13:17:00 1368

原创 PE教程6: Import Table(引入表)

首先,您得了解什么是引入函数。一个引入函数是被某模块调用的但又不在调用者模块中的函数,因而命名为"import(引入)"。引入函数实际位于一个或者更多的DLL里。调用者模块里只保留一些函数信息,包括函数名及其驻留的DLL名。现在,我们怎样才能找到PE文件中保存的信息呢? 转到 data directory 寻求答案吧。再回顾一把,下面就是 PE header:IMAGE_NT_HEADER

2008-06-17 12:12:00 875

原创 PE教程5: Section Table(节表)

到本课为止,我们已经学了许多关于 DOS header 和 PE header 的知识。接下来就该轮到 section table(节表)了。节表其实就是紧挨着 PE header 的一结构数组。该数组成员的数目由 file header (IMAGE_FILE_HEADER) 结构中 NumberOfSections 域的域值来决定。节表结构又命名为 IMAGE_SECTION_HEADER。

2008-06-16 15:58:00 790

原创 PE教程4: Optional Header

我们已经学习了关于 DOS header 和 PE header 中部分成员的知识。这里是 PE header 中最后、最大或许也是最重要的成员,optional header。回顾一下,optional header 结构是 IMAGE_NT_HEADERS 中的最后成员。包含了PE文件的逻辑分布信息。该结构共有31个域,一些是很关键,另一些不太常用。这里只介绍那些真正有用的域。这儿有个

2008-06-16 15:45:00 794

空空如也

空空如也

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

TA关注的人

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