windows开发
文章平均质量分 90
dbdoing
一名在路上的程序员
展开
-
DECLARE_MESSAGE_MAP()、BEGAIN_MESSAGE_MAP()和 END_MESSAGE_MAP()
DECLARE_MESSAGE_MAP()、BEGAIN_MESSAGE_MAP()和 END_MESSAGE_MAP() 都是宏,而不是函数。 首先,DECLARE_MESSAGE_MAP()在类的头文件中用于声明类中含有的消息映射。 其次,BEGAIN_MESSAGE_MAP()和 END_MESSAGE_MAP() 在cpp文件原创 2013-10-22 16:23:11 · 1300 阅读 · 0 评论 -
XP/WIN7系统中删除已结束进程托盘图标的方法
对于使用托盘图标的程序,当我们通过强制结束进程,或者程序异常退出时,托盘图标区域总会有托盘图标的残留,需要我们用鼠标移到残留区域时,托盘图标才会自动消失。有时我们需要去做相关的处理,比如在软件升级时,会强制结束进程,这时需要自动的去清除残留的托盘图标。通过研究和查阅网络,整理如下的方法。 1、通过向托盘区域发送WM_MOUSEMOVE消息,模拟鼠标移动到图潘区域的效果,使图标自动转载 2014-05-07 18:30:20 · 3137 阅读 · 1 评论 -
windows下如何判断操作系统是64位还是32位
64位Wnidows 里面有个叫Wow64 的模拟器技术,可以使32位的程序在64位Windows 上运行。 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数 GetNativeSystemInfo 可以获得这个信息。代码示例: SYSTEM_INFO si;GetNativeSystemInfo转载 2014-06-06 10:25:01 · 2762 阅读 · 0 评论 -
详解隐藏windows系统托盘图标
曾经写过一篇Windows下的任务栏图标编程 ,其实那篇文章讲的是如何将我们自己的程序最小化到托盘并进行操作的编程方法。前两天看到论坛 里有人讨论如何隐藏托盘图标,记得从前为朋友写过一个隐藏大智慧软件的程序,采用的方法就是将窗口最小化并隐藏大智慧在托盘上的图标,但是因为涉及到键盘钩子,最后并没有这么做,而是用添加一个虚拟桌面 的方法达到了效果。 看到这篇帖子 ,依稀想起我曾经做过的一转载 2014-06-05 22:13:50 · 6458 阅读 · 0 评论 -
VC++动态链接库编程之基础慨念
1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该转载 2014-06-17 10:51:04 · 729 阅读 · 0 评论 -
怎么生成dll
一、为什么需要dll代码复用是提高软件开发效率的重要途径。一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架,如ATL、MFC等,它们都以源代码的形式发布。由于这种复用是“源码级别”的,源代码完全暴露给了程序员,因而称之为“白盒复用”。“白盒复用”的缺点比较多,总结起来有4点。暴露了源代码;容易与程序员的“普通转载 2014-06-18 17:16:55 · 1081 阅读 · 0 评论 -
详谈UI线程和Windows消息队列
在Windows应用程序中,窗体是由一种称为“UI线程(User Interface Thread)”的特殊类型的线程创建的。 首先,UI线程是一种“线程”,所以它具有一个线程应该具有的所有特征,比如有一个线程函数和一个线程ID。 其次,“UI线程”又是“特殊”的,这是因为UI线程的线程函数中会创建一种特殊的对象——窗体,同时,还一并负责创建窗体上的各种转载 2014-08-04 10:07:21 · 800 阅读 · 0 评论 -
__declspec(dllimport)的用途
是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。转载 2014-08-07 15:55:33 · 1845 阅读 · 0 评论 -
WaitForMultipleObjects与MsgWaitForMultipleObjects用法
用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法。 但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。用户模式与内核模式线程同步机制比较: 用户模式内核模式优点线程同步机制速度快 支持多个进程之间的线程同步,防止转载 2014-08-11 11:04:15 · 2764 阅读 · 0 评论 -
CreateEvent函数在多线程中使用及实例
CreateEvent函数详解参见博客文章:c++中CreateEvent函数解析(2)HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset, BOOL bInitialState,LPCSTR lpName);bManualReset:TRUE,使用ResetE转载 2014-09-10 14:52:49 · 1018 阅读 · 0 评论 -
openProcess时拒绝访问(GetlastError为5),返回的HANDLE为NULL的解决方法
遇到的问题:在winXP的VS2010里调试好的程序,直接双击exe文件能运行,但是什么都没执行,就是没有按我程序中写的去执行。找出问题的方法:由于是执行exe文件出的错误,因此用普通的打印语句(printf,cout等)是没用的,我在程序 中每个几行加一个messageBox或者向一个文件写内容来判断程序执行到哪儿出现了问题。具体介绍:最近在写一个进程监控管理的程序,都已经写好了,并且在原创 2014-04-29 20:37:52 · 15005 阅读 · 0 评论 -
Windows下网络负荷率、Cpu占用率的实时监视
最近在写一个网络和Cpu负荷率的实时监控程序,上网查了很多资料,实现方法也比较多,可以用GetIfTable/GetIfTable2、Performance Counter等,最后比较了下,选择了Performance Counter。MSDN上有详细介绍其API。以下是我参考的一个写法:(http://en.literateprograms.org/CPU_usage_using_perfo原创 2014-10-31 16:07:26 · 16683 阅读 · 0 评论 -
windows下 程序里和cmd中获取/查看进程的参数的方法,打开进程
最近在写一个进程管理的程序,原创 2014-04-17 16:37:10 · 17014 阅读 · 0 评论 -
windows下创建进程,CreateProcess()详解及用法
CreateProcess() 函数原型如下:[C++] 纯文本查看 复制代码?010203040506070809101112BOOLWINAPI CreateProcess( __in_opt LPCTSTR转载 2014-04-17 18:04:46 · 104159 阅读 · 7 评论 -
AfxWinMain中pThread->InitInstance()出错的解决方法
最近在写程序时,在Debug下能正常运行,但是换到Release下就报一个中断错误:“0x71ea1cbc(mfc100.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突”,并且,错误箭头指到了winmain.cpp文件中AfxWinMain函数内的if (!pThread->InitInstance())语句,经过分析是pThread为NULL,原创 2014-05-10 10:00:26 · 6534 阅读 · 2 评论 -
DDX_Text / DDX_Control() /DoDataExchange(pDX)/update(TRUE)/update(FALSE)
DDX_Text()的几种形式:void AFXAPI DDX_Text( CDataExchange* pDX, int nIDC, BYTE& value );void AFXAPI DDX_Text( CDataExchange* pDX, int nIDC, short& value );void AFXAPI DDX_Text( CDataExchange* pDX, int转载 2013-11-12 16:07:58 · 1232 阅读 · 0 评论 -
Windows消息机制概述
Windows消息机制概述消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。 消息本身是作为一个记录传递给应用程序的,这个转载 2013-11-14 10:37:19 · 799 阅读 · 0 评论 -
回调函数的介绍
回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数(简单如一按钮的事件相应函数)。回调函数在windows编程使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。 之所以产生使用回调函数这个想法,用VC写的一个DLL程序转载 2013-11-14 13:26:44 · 1086 阅读 · 0 评论 -
Windows 消息 机制
Windows 在操作系统平台占有绝对统治地位,基于Windows 的编程和开发越来越广泛。Dos 是过程驱动的,而Windows 是事件驱动的[6],这种差别的存在使得很多Dos 程序员不能习惯Windows 的程序开发。而很多Windows 程序开发人员也只是对消息运行机制一知半解,想要掌握Windows 编程的核心,必须深刻理解消息机制。事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循转载 2013-11-14 13:35:10 · 1254 阅读 · 0 评论 -
windows 的事件驱动机制和消息循环
1、Windows事件驱动机制 我们当中不少使用VC、Delphi等作为开发语言的程序员是一步步从DOS下的Basic、C++中走过来的,而且大多在刚开始学习编程时也是先从DOS下的编程环境入手的,因此在习惯了DOS下的过程驱动形式的顺序程序设计方法后,往往在向Windows下的开发环境转型的过程中会对Windows所采取的事件驱动方式感到无法适应。因为DOS和Windows这两种操作系统的转载 2013-11-14 13:37:50 · 2108 阅读 · 0 评论 -
DDX_TEXT(pDX,IDC_BIO,m_strBio)的含义
DDX_TEXT(pDX,IDC_BIO,m_strBio)的意思就是 :将ID为 IDC_BIO的控件的文字与变量m_strBio进行绑定。调用UpdateData(TRUE)时,将控件的文字赋值给变量调用UpdateData(FALSE)时,将变量的值赋值给控件的文字(具体看SDK)---------------------------------------------转载 2013-12-05 14:53:35 · 2907 阅读 · 0 评论 -
如何获取某个进程的主窗口以及创建进程的程序名(进程映像名)
在编写工具程序以及系统管理程序的时候。常常需要获取某个进程的主窗口以及创建此进程的程序名。获取主窗口的目的是向窗口发送各种消息。获取启动进程的程序名可以控制对进程的操作。但是有些进程往往有多个主窗口。你要的是哪一个主窗口呢?如果你用过Outlook程序,你就会发现它有多个主窗口,一个窗口列出收件箱和其它文件夹。如果你打开e-mail,便会有另外一个窗口显示信息。它们都是没有父窗口(或者说宿主窗口)转载 2014-04-09 15:03:19 · 2442 阅读 · 0 评论 -
枚举进程的方法
在Windows 2000以上的MS操作系统,通过Windows的任务管理器可以列出当前系统的所有活动进程,在Windows XP中,更是在控制台下增加了一条Tasklist命令,让系统下的所有进程无所遁行。这一切是怎么实现的呢?方法一第一种方法是大家比较熟悉的通过ToolHelp Service提供的API函数来实现。这里用到了3个关键的函数:CreateToolhelp32Sn转载 2014-04-09 15:25:43 · 1039 阅读 · 0 评论 -
GetLastError 返回值代表含义大全
GetLastError 返回值大全 〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格转载 2014-04-14 15:30:17 · 1525 阅读 · 0 评论 -
eixt(0),ExitProcess和TerminateProcess的区别和联系
首先来谈谈一个进程的执行流程。每个应用程序都有个主函数,在WINDOWS下,只支持两种类型的应用程序——CUI(控制台应用程序)和GUI(图形界面应用程序),相应的,其主函数类型不同。来看下这几个入口函数int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE,PSTR pszCmdLine, int nCmdShow); int WINAPT w转载 2014-04-14 17:01:07 · 5048 阅读 · 0 评论 -
使用TerminateProcess结束进程时,错误码为5的解决方法
最近写一个守护进程的程序,发现目标进程挂起后,j原创 2014-04-16 15:39:39 · 8643 阅读 · 2 评论 -
使用Dump文件让程序在崩溃时体面的退出
在我的那篇《让程序在崩溃时体面的退出之CallStack》中提供了一个在程序崩溃时得到CallStack的方法。可是要想得到CallStack,必须有pdb文件的支持。但是一般情况下,发布出去的程序都是Release版本的,都不会附带pdb文件。那么我们怎么能在程序崩溃的时候找到出错的具体位置呢?这个时候就该Dump文件出场了!Dump文件是进程的内存镜像,可以把程序运行时的状态完整的保存下来。转载 2015-05-12 15:43:07 · 957 阅读 · 0 评论