![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Win程序开发
文章平均质量分 73
syf442
这个作者很懒,什么都没留下…
展开
-
Windows消息大全
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的:ty转载 2009-07-13 13:07:00 · 229 阅读 · 0 评论 -
Windows消息机制
Windows操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的。如果不理解Windows消息处理机制,肯定无法深入的理解Windows编程。可惜很多程序员对Windows消息只是略有所闻,对其使用知之甚少,更不了解其内部实现原理,本文试着一步一步向大家披露我理解的Windows消息机制。可以说,掌握了这一部分知识,就是掌握了Windows编程中的神兵利器,转载 2009-07-13 11:46:00 · 1132 阅读 · 0 评论 -
软件项目版本号的命名格式
软件项目版本号的命名格式 版本控制比较普遍的 3 种命名格式 : Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。 Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。 RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。R转载 2009-07-14 13:32:00 · 269 阅读 · 0 评论 -
VC中的一些常用方法
一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构转载 2009-07-14 13:57:00 · 252 阅读 · 0 评论 -
Windows消息机制要点
1. 窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wParam, lParam), 当窗口收到消息时系统就会调用此窗口过程来处理消息。(所以叫回调函数)2 消息类型 1) 系统定义消息(System-Defined Messages) 在SDK中事先定义好的转载 2009-07-13 13:05:00 · 291 阅读 · 0 评论 -
Rootkit 1: Detection Hide Process
Rootkit 1: Detection Hide Process 什么叫rootkit? 它是由有用的小型程序组成的工具包,使得攻击者能够保持访问计算机上具有最高权限的用户“root”.rootkit是能够持久或可靠地、无法检测地存在于计算机上的一组程序和代码.rootkit主要分为下列大类:1 进程隐藏2 文件隐藏3 端口隐藏4 注册表隐藏5 驱动服务隐藏Part I: 进程隐藏一:序言转载 2009-07-13 17:54:00 · 778 阅读 · 0 评论 -
GetTickCount()
GetTickCount原创 2009-07-15 14:31:00 · 312 阅读 · 0 评论 -
Windows时间函数大全
介绍 我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用到时间函数。还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得出函数或者算法的运行时间。编译器和操作系统为我们提供了很多时间函数,这些时间函数的精度也是各不相同的,所以,如果我们想得到准确的结果,必须使用合适的时转载 2009-07-17 12:59:00 · 312 阅读 · 0 评论 -
CListCtrl使用详解
1。先来介绍REPORT类型的CListCtrl:首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle );其中 LVS_EX_CHECKBOXES 表示添加CheckBox LVS_EX_FULLROWSELECT 表示选择整行 LVS_EX_GRIDLINES 表示添加表格线如果设置了LVS_EX_CHEC转载 2009-07-21 13:49:00 · 297 阅读 · 0 评论 -
字符串UTF-8与ASCII相互转换
字符串UTF-8与ASCII相互转换 收藏 LPSTR Convert(LPCSTR str, int sourceCodepage, int targetCodepage){ int len=_tcslen(str); int unicodeLen=MultiByteToWideChar(sourceCodepage,0,str,-1,NULL,0); wchar_t* pUnicode; pU转载 2009-07-21 13:52:00 · 496 阅读 · 0 评论 -
列举本程序加载的模块信息
Windows核心编程之一列举本程序加载的模块信息本文作者:jimmy文章性质:原创发布日期:2004-04-02MessageBox(GetActiveWindow(),"即将列举本程序所加载的Dll文件","",MB_OK); MEMORY_BASIC_INFORMATION mbi; PBYTE ptr = NULL; DWORD dwBytesRetur转载 2009-07-23 15:31:00 · 403 阅读 · 0 评论 -
理解内存分页机制
理解内存分页机制2008-03-17 17:07在8086时期,寄存器是16位,无法存放20位的物理地址,为了解决这问题,人们提出了分段机制,分段机制就是将内存分段,每段大小64kb,在段寄存器中放入段基址,然后+上段偏移量就成了物理地址或者线性地址,为什么说是或呢?因为在采用分页基址的系统中,线性地址加上页偏移量才是真正的物理地址,如果没有用分页机制,计算出来的就是物转载 2009-07-23 15:36:00 · 684 阅读 · 0 评论 -
Win32的虚拟内存分配函数
虚拟内存API是其他API的基础。虚拟内存API以页为最小分配单位,X86上页长度为4KB,可以用GetSystemInfo函数提取页长度。虚拟内存分配函数包括以下函数: LPVOID VirtualAlloc(LPVOID lpvAddress, DWORD cbSize,转载 2009-07-23 15:58:00 · 740 阅读 · 0 评论 -
大端(Big Endian)与小端(Little Endian)详解
大端(Big Endian)与小端(Little Endian)详解【大端(Big Endian)与小端(Little Endian)简介】 little endian和big endian是表示计算机字节顺序的两种格式,所谓的字节顺序指的是长度跨越多个字节的数据的存放形式. 假设从地址0x00000000开始的一个字中保存有数据0x1234abcd,那么在两种不同的内存转载 2009-07-23 17:02:00 · 660 阅读 · 0 评论 -
CString 操作指南
收藏 CString 操作指南原著:Joseph M. Newcomer翻译:littleloach原文出处:codeproject:CString Management 通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC 在做字符串操作的时候方便了很多。不管怎样,使用CString转载 2009-07-21 13:50:00 · 274 阅读 · 0 评论 -
开机自启动的几个途径
开机自动运行的几个途径 收藏 1. 注册表项:HKEY_USERS/.DEFAULT/Software/Microsoft/Windows/CurrentVersion/RunHKEY_USERS/.DEFAULT/Software/Microsoft/Windows/CurrentVersion/RunonceHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windo转载 2009-07-21 13:53:00 · 366 阅读 · 0 评论 -
取计算机特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号)
©2005 黄友生。本文由原作者发布于MSN Space、CSDN。你可以保存、在非商业软件中使用、在非盈利性文章中引用本文中的部分或全部文字,但请注明作者及原文地址。要用于其它用途,请先联系作者(eien@eyou.com)。作者不保证本文完全正确无误、不对因本文中的理论或代码缺陷造成的损失负责。本文中所有原理及思想均取自网络,有修改。其中获取硬盘序列号、获取CPU编号、获取BIOS编号的原始代转载 2009-07-23 10:18:00 · 979 阅读 · 0 评论 -
关于禁止Win系统关机
建立MFC程序,截获WM_QUERYENDSESSION消息,响应ON_WM_QUERYENDSESSION() ,消息响应函数对应为: afx_msg BOOL OnQueryEndSession(); 直接在该函数中return false 则拒绝了Windows的WM_QUERYENDSESSION的请求,Windows则无法正常软关机。(开始->关闭计算机->关机、注销、原创 2009-07-28 16:03:00 · 1153 阅读 · 0 评论 -
GetWindowLong函数
函数功能描述:用这个函数能够获得指定窗口的信息函数原型:LONG GetWindowLong( HWND hWnd,int nIndex )参数:hWnd:指定窗口的句柄nIndex:需要获得的信息的类型 值 功能nIndex取值如下:GWL_EXSTYLE 得到扩展的窗口风格GWL_STYLE 得到窗口风格GWL_WNDPROC 得转载 2009-07-28 11:10:00 · 933 阅读 · 1 评论 -
Window关机函数ExitWindowsEx详解
“系统ShutDown”属于Windows系统的一种基本服务。功能上有“关闭系统”,“注销用户”,“锁定工作站”3中操作。SDK中提供了几个函数,来对此服务进行调用。 “关闭系统”功能使计算机可以被安全的关闭。所有在文件系统里缓冲的内容都被强制写入磁盘。然后,显示相应的对话框,提示用户计算机将被关闭或者已经准备好被关闭。可选的情况一般是计算机在关闭后重起,而不是直接切断电源。 如果转载 2009-07-28 14:24:00 · 458 阅读 · 0 评论 -
控制台程序的事件处理
控制台程序在Windows程序的角色中是非常強大且方便的,像VC,C#,Delphi等等,好多功能強大的語言都支持控制台程序。她沒有複雜的GUI,完全是32位的程序,能夠調用除GDI 函數之外的API,支持多線程,支持MFC等等。用她來調試程序、學習程序設計、做實驗等是再合適不過的了。我經常把我試驗性的程序用控制台方式來寫,非常方便。 Console程序不像Win32 GUI程序那樣具有消息隊转载 2009-07-28 14:58:00 · 1077 阅读 · 0 评论 -
Windows消息映射函数原型
Message Map Functions in the Microsoft Foundation Class Library HANDLERS FOR WM_COMMAND MESSAGES Map Entry Function PrototypeON_COMMAND(, ) afx_msg void memberFxn();ON_COMMAND_EX(, ) afx转载 2009-07-28 13:21:00 · 606 阅读 · 0 评论 -
vc6 生成最小的exe文件
编译出体积尽可能的小的exe,步骤如下: 1.扔掉CRT. CRT提供了大量常用的函数.可说只要C/C++程序基本都会用到它.但是获得了方便的同 时也增大了不少体积.虽然可以通过动态链接到外部的dll来解决,但是自此就有了对一 个更大的dll的依赖.所以要减肥,就要先拿CRT开刀. 在cl的编译参数中加上/MD,再在link中加上/nodefaultlib:msvcrt.lib即可避免链接 到cr转载 2009-07-29 08:21:00 · 1874 阅读 · 0 评论 -
PE文件格式深入浅出(一)
“ PE 的意思就是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行体文件格式。它的一些特性继承自 Unix的 Coff (common object file format)文件格式。"portable executable"(可移植的执行体)意味着此文件格式是跨win32平台的 :即使Windows运行在非Intel的CPU上,任何win32平台转载 2009-07-29 09:15:00 · 652 阅读 · 0 评论 -
检测PE文件的有效性
2008年01月14日 星期一 13:41 本文刊登于2007年第8期的《黑客防线》,有内容部分改动。正文如下:从杀毒软件的角度来讲检测文件是否为PE文件,并再进一步判断使用何种方式对文件进行操作。在病毒感染可执行文件时,也是应该有这样步骤的。那么,就来看看杀毒软件是如何检测PE文件的有效性了。PE文件是在windows系统中任何可执行模块或者DLL转载 2009-07-29 09:17:00 · 1072 阅读 · 0 评论 -
pragma 预处理指令详解
2008-11-13 14:20pragma指令简介在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!一. message 参数。message它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:#pr转载 2009-07-29 14:47:00 · 301 阅读 · 0 评论 -
vc 下遍历文件夹
2008-12-28 20:26void find(char *lpPath){char szFind[MAX_PATH];char szFile[MAX_PATH];CString info; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPath); strcat(szFind,"//*.*");转载 2009-07-29 14:49:00 · 371 阅读 · 1 评论 -
VC 关键字 __asm
__asm微软详述:__asm关键字启动内联汇编并且能写在任何c/c++合法语句之处.它不能单独出现.它必须接汇编指令、一组被大括号包含的指令或一对空括号.术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括号内。以下代码片段是在括号内的一个简单的__asm块。__asm{ mov al, 2 mov dx, 0xD007 out al, dx}另一种方法是,你转载 2009-07-29 15:51:00 · 965 阅读 · 0 评论 -
CreateEvent 作用
当你创建一个线程时,其实那个线程是一个循环,不像上面那样只运行一次的。这样就带来了一个问题,在那个死循环里要找到合适的条件退出那个死循环,那么是怎么样实现它的呢?在Windows里往往是采用事件的方式,当然还可以采用其它的方式。在这里先介绍采用事件的方式来通知从线程运行函数退出来,它的实现原理是这样,在那个死循环里不断地使用WaitForSingleObject函数来检查事件是否满足,如果满足就退转载 2009-07-29 14:43:00 · 999 阅读 · 0 评论 -
《Windows核心编程》学习重点二
第二章 Unicode 之所以将这一章放在本书的开头,是因为考虑到U n i c o d e 是开发任何应用程序时要采用的基本步骤。本书的每一章中几乎都要讲到关于U n i c o d e 的问题,而且书中给出的所有示例应用程序都是“用U n i c o d e 实现的”。如果你为Microsoft Windows 2000 或Microsoft Windows CE 开发应用程序,原创 2009-08-11 11:31:00 · 1286 阅读 · 0 评论 -
《Windows核心编程》学习重点
第1章 对程序错误的处理 当调用一个Windows函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执行任务。如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。表1-1 Wi n d o w s 函数常用的返回值类型 数据类型 表示失败的值 V O I D原创 2009-08-11 11:03:00 · 528 阅读 · 0 评论 -
VC 字符串相关宏 _T、TEXT,_TEXT、L 的作用
一、 在字符串前加一个L作用: 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。 strlen("asd") = 3; strlen(L"asd") = 6; 二、 _T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式转载 2009-08-12 10:03:00 · 1444 阅读 · 0 评论 -
《Windows核心编程》学习重点三
第3章 内核对象 准确地理解内核对象对于想要成为一名Wi n d o w s 软件开发能手的人来说是至关重要的。内核对象可以供系统和应用程序使用来管理各种各样的资源,比如进程、线程和文件等。3.1 什么是内核对象 系统要创建和操作若干类型的内核对象,比如存取符号对象、 事件对象、文件对象、文件映射对象、I / O 完成端口对象、作业对象、信箱对象、互斥对象、管道对象原创 2009-08-12 14:50:00 · 464 阅读 · 1 评论 -
VC增加自定义消息
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。下面是增加自定义消息的步骤:第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。第二步:实现消息处理函数。该函数使用WPRAM和LPAR转载 2009-08-20 11:29:00 · 264 阅读 · 0 评论 -
实现文件拖放的一种简洁方法
1、自已编写专用的类,程序复杂、维护麻烦;2、必须要将文件拖到对话框中的编辑控件上,拖动的文件名才被接受,而标准的WINDOWS程序只须将文件拖放到对话框即可被接受;3、只能接受一个拖放的文件。本文要介绍的这种方法只须调用一个WINDOWS API函数DragQueryFile即可实现文件的拖放操作,而且完全克服了上述3点不足。下面先介绍一下这个函数。 ---- DragQueryFile原型为:转载 2009-08-20 11:31:00 · 287 阅读 · 0 评论 -
程序自删除方法大总结
程序的自删除早已经不是什么新鲜的话题了,对于各位大虾来说是更是比较容易的事情,但想想自己刚学时遇到的种种错误,我觉得有必要把自己所知道的各种方法总结一下,希望对新手的学习能够有所帮助。程序的自删除广泛用于反安装程序最后的自删除(环保呀!),当然更多见于木马、病毒首次安装的自动销毁^*^,至于用于何种用途就看你自己啦!经典自删除说到程序的自删除就不能不说由 Gary Nebbett 等大虾所写的代码转载 2009-08-20 11:32:00 · 515 阅读 · 0 评论 -
程序启动画面
在VC知识库上看到许多有关程序启动画面的程序而我觉得程序讲求的是"简而易懂",不需要太多的技巧,只要程序写的出来就好,于是我以另外一种简便的方式来设计程序启动画面同时在程序启动时播放音效,此程序的关键在于Sleep以及PlaySound这两个API函数与StrectBlt这个函数必须记得连结winmm.lib才可使用PlaySound函数,具体方法如下:在CSplashWindow::CSplas转载 2009-08-20 11:33:00 · 362 阅读 · 1 评论 -
Win32 API大全
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetCo转载 2009-08-20 11:22:00 · 1042 阅读 · 0 评论 -
关于RamDisk (创建虚拟磁盘)
一 创建虚拟磁盘设备IoCreateDevice(..., FILE_DEVICE_VIRTUAL_DISK, // 虚拟磁盘设备 (FILE_DEVICE_SECURE_OPEN), FALSE,转载 2009-08-19 10:45:00 · 547 阅读 · 0 评论 -
DefineDosDevice 创建虚拟驱动器
函数:BOOL DefineDosDevice( DWORD dwFlags, // options LPCTSTR lpDeviceName, // device name LPCTSTR lpTargetPath // path string原创 2009-08-20 16:32:00 · 2344 阅读 · 1 评论