vc++
文章平均质量分 81
wdswei
这个作者很懒,什么都没留下…
展开
-
windows窗口样式
/* 窗口样式参考列表: WS_POPUP - 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用) WS_CHILDWINDOW - 子窗口(不能与WS_POPUP合用) WS_MINIMIZE - 最小化状态 WS_VISIBLE - 可见状态 WS_DISABLED - 不可用状态 WS_CLIPSIBLINGS - 使窗口排除子窗口之间的相对区域 W转载 2010-01-05 08:31:00 · 203 阅读 · 0 评论 -
对C/C++可变参数表的深层探索
引言 C/C++语言有一个不同于其它语言的特性,即其支持可变参数,典型的函数如printf、scanf等可以接受数量不定的参数。如:printf ( "I love you" ); printf ( "%d", a );printf ( "%d,%d", a, b ); 第一、二、三个printf分别接受1、2、3个参数,让我们看看printf函数的原型:转载 2010-01-04 11:33:00 · 105 阅读 · 0 评论 -
基于小波变换的图像压缩技术初探
我们知道,图像压缩就是要寻找高压缩比、并使压缩后的图像有合适的信噪比的方法,对压缩后的图像还要能实现低失真度地恢复图像。压缩性能的评价标准之一是图像能量损失和零系数成分值。能量损失越小,零系数成分值越大,图像压缩的性能就越高。 小波图像压缩的特点是压缩比高,压缩速度快,能量损失低,能保持图像的基本特征,且信号传递过程抗干扰性强,可实现累进传输。 首先我们简单了解一下二维小波变换转载 2010-01-04 11:34:00 · 653 阅读 · 0 评论 -
使用Visual C++实现OLE剪贴板
--- 一、概述---- 在Windows操作系统中存在两种剪贴板机制:Windows标准剪贴板和OLE剪贴板机制。---- 标准的Windows剪贴板是一个被所有Windows应用程序共享的系统服务,因此它并没有自己的句柄或类。但你可以通过CWnd类的成员函数来管理剪贴板。---- 自从OLE(Object Linking and Embedding,对象链接和嵌入)诞生之后,W转载 2010-01-04 11:43:00 · 128 阅读 · 0 评论 -
MFC的关键技术:动态创建
动态创建就是运行时创建指定类的对象,在MFC中大量使用。如框架窗口对象、视对象,还有文档对象都需要由文档模板类对象来动态的创建。 初次接触MFC的时候,很容易有这样的迷惘。MFC的几大类不用我们设计也就罢了,但最疑惑的是不用我们实例化对象。本来最直观的理解就是,我们需要框架的时候,亲手写上CFrameWnd myFrame;需要视的时候,亲自打上CView myView;……但MFC不给我们这个机转载 2010-01-04 11:47:00 · 107 阅读 · 0 评论 -
CTime和CString互相转换
C++中,CTime 与 CString转换CTime m_StartTime1 = CTime::GetCurrentTime();CString csStartTime = m_StartTime1.Format( "%Y%m%d%H%M%S" ); 使用sprintf及sscanf函数进行CString与CTime之间的转换一.将CString转为CTime的几种方法CString time转载 2010-01-04 11:51:00 · 359 阅读 · 0 评论 -
运行时类型识别(RTTI)
运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C++编程中的sizeof()运算子类似的地方(包含一个头文件,然后就有一个熟悉好用的函数)。typdid()关键的地方是可以接转载 2010-01-04 11:52:00 · 124 阅读 · 0 评论 -
常用软件滤波方法及其示例程序
1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差示例:/*A值可根据实际情况调整value为有效值,new_value为当前采转载 2010-01-04 11:55:00 · 90 阅读 · 0 评论 -
如何关闭本地和远程NT/2000系统进程
杀掉本地进程其实很简单,取得进程ID后,调用OpenProcess函数打开进程句柄,然后调用TerminateProcess函数就可以杀掉进程了。有些情况下并不能直接打开进程句柄,例如WINLOGON等系统进程,因为权限不够。这个时候我们就得先提升自己的进程的权限了。提升权限过程也不复杂,先调用GetCurrentProcess函数取得当前进程的句柄,然后调用OpenProcessToken打开当转载 2010-01-04 16:11:00 · 121 阅读 · 0 评论 -
图像识别初探
图像识别初探目录1 前言. 11.1 植物的发展史. 11.1.1 植物界的类群及多样性. 11.1.2 植物的分类等级. 21.2植物的识别方法. 31.2.1 花与种子的特性. 31.2.2 叶子的特征. 31.3 什么是数字图像处理. 51.3.1 数字图像处理概念及其意义. 51.3.2 数字图像处理中的基本图像类型. 61.3.3 图像转载 2010-01-04 11:25:00 · 582 阅读 · 0 评论 -
用VC处理ACCESS中的位图数据
----比较复杂的数据库中一般会有位图数据(比如相片)。虽然这类“OLE对象”的插入、删除以及替换操作在ACCESS里容易实现,在VC中却显得复杂而且颇费周折。以下把作者用VC处理ACCESS数据库中的位图数据的体会简单叙述一下,以请教于大家。----在CdaoRecordset派生类的对象中,VC自动为ACCESS的“OLE对象”域生成一个CLongBinary对象。该类虽然较简单,在程序里却需转载 2010-01-04 11:20:00 · 151 阅读 · 0 评论 -
实时刷新的透明静态文本框
在一个程序中,需要经常改写一个静态文本框中的内容,而这个文本框又是透明的。 根据网上资料试验,均存在改写后文字重叠现象,redrawwindow时又有屏幕闪烁,怎么办? 只刷新控件所在父窗口的局部区域:)CMyTitleStatic::CMyTitleStatic(){ m_TextColor=RGB(0,0,0); pFont.CreateFont(18,0,0,0,转载 2010-01-04 10:34:00 · 140 阅读 · 0 评论 -
MFC菜单
菜单消息产生的顺序问题? WM_INITMENU---当选中顶层菜单时发生WM_INITPOPUPMENU--在子菜单显示之前--在这里AFX进行了一些操作--添加新的消息比如:命令更新消息/WM_MEASUREITEM--WM_DRAWITEMWM_COMMAND注意:在窗口中重写PreCreateWindow--可以改变窗口的外观形态。***************转载 2010-01-04 10:47:00 · 175 阅读 · 0 评论 -
TIF图像格式
TIF图由四个部分组成:1、图像文件头(Image File Header简称IFH):图一 IFH结构描述 IFH数据结构包含3个成员共计8个字节,Byte order成员可能是“MM”(0x4d4d)或“II”(0x4949),0x4d4d表示该TIFF图是摩托罗拉整数格式 0x4949表示该图是Intel整数格式;Version成员总是包含十进制42(0x2a),它用于进一步校验该文件转载 2010-01-04 10:58:00 · 185 阅读 · 0 评论 -
VC中Unicode字符串的处理
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符转载 2010-01-04 11:01:00 · 95 阅读 · 0 评论 -
Socket API,CAsyncSocket,CSocket内幕及其用法
Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别。虽然同步好用,不费劲,但不能满足一些应用场合,其效率也很低。 也许初涉编程的人不能理解“同步(或阻塞)”和“异步(或非阻塞)”,其实简单两句话就能讲清楚,同步和异步往往都是针对一个函数来说的,“同步”就是函数直到其要执行的功能全部完成时才返回,而“异步”则是,函转载 2010-01-04 11:02:00 · 86 阅读 · 0 评论 -
BYTES与十六进制表示的相互转换
引言: 我们在程序的调试中,经常需要把一段字节序列(BTYES)输出显示,由于,这样的BYTES不是普通的以/n结尾的字符串,而我们通常需要查看BYTES中每个字节的值。所以,我们要将BYTES转换为16进制表示的字符串形式。也就是需要把“字节序列”转换成16进值表示的字符串。 另外,我们也需要把16进制表示的字符串,转换为对应的BYTES。 下面给出的两个转载 2010-01-04 11:03:00 · 332 阅读 · 0 评论 -
怎样在屏幕上以十六进制样式显示内存中的一段数据
怎样在屏幕上以十六进制样式显示内存中的一段数据。下面分以下几步来介绍:1、字节转换成十六进制字符2、数据块转换成十六进制字符串3、将十六进制字符串格式化输出4、将前面三步综合,将一段数据以十六进制显示。 1、字节转换成十六进制字符定义十六进制字符的常量字符串,然后用字节的高四位和低四位分别作下标来直接访问常量表即得到十六进制的字符。(该功能用C语言库中的转载 2010-01-04 11:05:00 · 257 阅读 · 0 评论 -
wchar_t与char转换
wchar_t与char转换 C++标准中,wchar_t是宽字符类型,每个wchar_t类型占2个字节,16位宽。汉字的表示就要用到wchar_t 。char,我们都知道,占一个字节,8位宽。其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了。wchar_t 转换为char 的代码如下: 有如下的wchar_t和char变量:wchar_t w_cn转载 2010-01-04 11:11:00 · 114 阅读 · 0 评论 -
系统进程的检测
本周末研究了一下如何枚举系统中的进程一、在ring3层:比较常见的方法是利用PROCESSENTRY32 结构体,此结构体中包含了进程的各种信息。 首先,用 CreateToolhelp32Snapshot 将当前系统的进程、线程、DLL、堆的信息保存到一个缓冲区,这就是一个系统快照。如果你只是对进程信息感兴趣,那么只要包含 TH32CS_SNAPPROCES转载 2010-01-04 17:03:00 · 131 阅读 · 0 评论 -
轻松玩转CreateRemoteThread,让你的代码长出翅膀
CreateRemoteThread提供了一个在远程进程中执行代码的方法,就像代码长出翅膀飞到别处运行。本文将做一个入门介绍,希望对广大编程爱好者有所帮助。 先解释一下远程进程,其实就是要植入你的代码的进程,相对于你的工作进程(如果叫本地进程的话)它就叫远程进程,可理解为宿主。首先介绍一下我们的主要工具CreateRemoteThread,这里先将函数原型简单介绍以下。CreateRemoteT转载 2010-01-04 16:01:00 · 122 阅读 · 0 评论 -
隐藏进程检测
User Mode下的隐藏进程检测我们先来看一些简单的方法,这些方法可以用在ring3下,用不着驱动。检测的原理是每一个进程活动时都会暴露一些痕迹,可以通过这些痕迹检测到它们。这些痕迹包括打开的句柄、窗口和创建的系统对象。针对类似的检测方法来实现进程隐藏并不困难,但需要考虑进程工作时可能暴露出的所有迹象。目前还没有一个公开的rootkit做到了这一点(遗憾的是私有版本我也还没见到)。用户模式下的方转载 2010-01-04 17:12:00 · 257 阅读 · 0 评论 -
获取本机通讯薄的内容
获取本机通讯薄的内容 下载示例源码(http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=737)(http://www.vckbase.com/document/viewdoc.asp?id=660)简介 如果你想获取本机通讯簿(Outlook Express和Outlook2000)的内容,如:联系人名字转载 2010-01-04 17:26:00 · 127 阅读 · 0 评论 -
VC通用控件编程之CList控件
(一)列表控制的主要功能 列表控制和视(List Control&View)主要用来以各种方式显示一组数据记录供用户进行各种操作,Windows98/95中资源管理器中的“查看”标签下的“大图标|小图标|列表|详细资源”就是一个非常好的典型应用。列表中的记录可以包括多个数据项,也可以包括表示数据内容的大小图标,用来表示数据记录的各种属性。 列表控制提供了对Windows列表功能操作的转载 2010-01-04 17:41:00 · 165 阅读 · 0 评论 -
Windows Hook
WINDOWS钩子函数的功能非常强大, 有了它您可以探测其它进程并且改变其它进程的行为。 理论: WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。 通过“挂钩”,您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时,WINDOWS都将调用该 函数。一共有两种类型的钩转载 2010-01-05 08:56:00 · 169 阅读 · 0 评论 -
获取Windows 系统的内核变量
获取Windows 系统的内核变量作 者:于旸邮 件:tombkeeper[0x40]nsfocus[0x2e]com tombkeeper[0x40]xfocus[0x2e]org完成于:2004.07.30关键字:PsLoadedModuleList、PsActiveProcessHead、NtSystemDebugControl PsNtosImageBase转载 2010-01-05 19:53:00 · 219 阅读 · 0 评论 -
位图八叉树算法
1.位图格式 位图文件主要分为4个部分组成:文件头,信息头,调色板,图像数据。 1.) 文件头 结构定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType ; // 文件类型,必须为 BM . DWORD bfSize ;转载 2010-01-04 16:21:00 · 296 阅读 · 0 评论 -
获取快捷方式的目标和参数
获取快捷方式(.lnk)的目标和参数 我看了Michael Taupitz关于建立快捷方式的方法,我认为有很多时候当我们在命令行模式中偶然发现一个快捷方式的时候,我们不知道这个.lnk文件指向什么地方。我写了一个函数,它以CString的形式返回了.lnk文件的目标和参数。CString GetShortcutTarget(const CString LinkFileNa转载 2010-01-04 17:34:00 · 135 阅读 · 0 评论 -
windows核心编程_线程_学习笔记
006---线程的基础知识1.线程也是由两个部分组成的:一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量2.注意CreateThread函数是用来创建线程的Windows函数。不过,如果你正在编写C/C++代码,决不应该调用CreateThread。相反,应该使用Visu转载 2010-01-04 17:39:00 · 186 阅读 · 0 评论 -
BHO(Browser Helper Object )简单介绍
BHO原理:BHO就是Browser Helper Object(浏览器辅助对象)BHO关联原理 (BHO关联的是SHDOCVW,也就是说不只关联IE,下面全部用IE来说明) 1.IE的窗口打开时,先寻找HKLM下的SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Browser Helper Objects/ 里的CLSI转载 2010-01-04 17:58:00 · 332 阅读 · 0 评论 -
如何用Shell实现程序组快捷方式的添加
如何用Shell实现程序组快捷方式的添加(一)前言 曾经在《电脑编程与维护》看到过一篇用DDE实现在程序组添加项目的方法,但是MSDN上明确指出应该用更加先进的Shell函数来实现,因此笔者在MSDN上仔细查找,终于在一篇名为“SHORTCUT: A SampleThat Manipulates Shortcuts”的文章中发现了这种方法。由于笔者初学COM不久,若有不当之处,请一定转载 2010-01-04 17:38:00 · 134 阅读 · 0 评论 -
通过进程名获取进程PID
/*用CreateToolhelp32Snapshot进行对系统所有进程进行快照,然后利用Process32First取得第一个进程句柄,然后把得到的PROCESSENTRY32结构体中的szExeFile就是进程名进行比较,利用Process32Next进行循环比较,具体用法看msdn,就可以得到进程句柄了,,,附上C/C++代码:*/#include#include#includeusing转载 2010-01-04 16:04:00 · 207 阅读 · 0 评论 -
用WriteProcessMemory做进程注入
今天要完成一个项内容,运行另一个应用程序abc.exe,实现它的父进程是explorer.exe。最开始的思路是获得explorer.exe的句柄,用ShellExecute启动abc.exe。但是用explorer.exe的句柄创建的进程的父进程依然是调用和进程,而不是传入句柄的进程。看来直接的不行,只能用间接的了。把运行abc.exe的代码段写到explorer.exe的内存里面去转载 2010-01-04 16:07:00 · 153 阅读 · 0 评论 -
简单的Winsock例程
这个程序的功能用来获得本机的主机名(Hostname)和IP地址。 程序如下: #include #include int doit(int rgc,char** rgv) { char ac[80]; struct hostent* phe; struct转载 2010-01-04 16:36:00 · 138 阅读 · 0 评论 -
windows核心编程--线程高级
暂停和恢复线程的运行在线程内核对象的内部有一个值,用于指明线程的暂停计数。当调用C r e a t e P r o c e s s或C r e a t e T h r e a d函数时,就创建了线程的内核对象,并且它的暂停计数被初始化为1。当线程的暂停计数是0的时候,除非线程正在等待其他某种事情的发生,否则该线程就处于可调度状态。恢复线程,可以用将调用R e s u m e T h r e a d转载 2010-01-04 16:48:00 · 105 阅读 · 0 评论 -
枚举所有进程ID和线程ID,以及窗口句柄
枚举进程ID以及线程ID,如果只需要PID以及TID的信息, 可以直接枚举线程即可.线程ID的结构体包含PID view plaincopy to clipboardprint?HANDLE m_hProcessSnap = NULL; HANDLE m_hThreadSnap = NULL; HANDLE m_hProcess = NULL;转载 2010-01-04 16:51:00 · 279 阅读 · 0 评论 -
CreateThread(Win32 API) ,Afxbeginthread(MFC),_beginthreadex
下面根据网上的一些资料和自己的理解加以阐述: 要创建一个工作线程并使线程启动起来,主要包含两步: Afxbeginthread(MFC): 启动线程的函数,里面包含了很多和MFC相关的启动信息,而且封装了一些常用的操作,使用起来也比较简便。而用另外两个函数就需要程序员对类型转载 2010-01-04 17:15:00 · 570 阅读 · 0 评论 -
Windows下多线程编程指南
1 内核对象1 .1内核对象的概念内核对象是内核分配的一个内存块,这种内存块是一个数据结构,表示内核对象的各种特征。并且只能由内核来访问。应用程序若需要访问内核对象,需要通过操作系统提供的函数来进行,不能直接访问内核对象(Windows从安全性方面来考虑的)。内核对象通过Create*来创建,返回一个用于标识内核对象的句柄,这些句柄(而不是内核对象)可在创建进程范围内使用,不能够被传递转载 2010-01-04 17:16:00 · 164 阅读 · 0 评论 -
Microsoft Agent技术应用
Microsoft Agent技术应用 --AgentShell的实现原理介绍[摘要] 本文介绍了如何应用Agent的以及AgentShell的实现原理和几个重要的技术处理。[关键词] Agent,COM,角色,语音识别,语音合成。 对Agent编程的方法主要有使用VB,VC等语言进行ActiveX调用,除转载 2010-01-04 17:37:00 · 134 阅读 · 0 评论 -
显示透明PNG图片
void CpngShowDlg::OnPaint(){ CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CDialog::OnPaint() HDC hdc =dc.m_hDC; if (hBmp==NULL) { hBmp = SHLoadImageFile(_T("//转载 2010-01-04 10:31:00 · 111 阅读 · 0 评论