常用 API 函数(一)

常用 API 函数(1): 网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDia...
2009-01-02 17:55 | 阅读 3884 次 | 评论 0 条

VC遍历文件夹下所有文件和文件夹

void find(char *lpPath){char szFind[MAX_PATH];char szFile[MAX_PATH];CString info; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPath); strcat(szFind,"\\*.*"); HANDLE hFind=::FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return; while(TRU...
2008-12-14 18:29 | 阅读 10399 次 | 评论 0 条

vc对注册表各数据类型操作

下面这个是基于MFC的基本对话写的。。 演示设置注册表的3中类型的值和获得注册表的3中类型的值。。 分别用RegSetValueEx()来设置,RegQueryValueEx()函数来获得。 void CUserRegDlg::OnOK() { // TODO: Add extra validation here CString str = "hello reg"; DWORD regd = 100; BYTE bValues[] = { 0x11, 0x12, 0x55 }; BYTE Vals[100]; DWORD lenIt = 100; HKEY hk; /...
2008-12-14 18:14 | 阅读 3397 次 | 评论 0 条

如何在VC++中使用注册表

如今修改注册表成为继超频之后的又一大热点,许多CFAN通过对注册表的修改使Win98显得更加个性化,诸多报刊杂志也纷纷扯起注册表这面旗帜,令人遗憾的是,在介绍注册表修改的众多的文章中,大都以手工修改为例,极少数文章也只介绍有关修改注册表软件的用法,至于如何在程序中实现却无人提及。为此我在Visual Studio6.0帮助文件中用Registry关键字进行搜索,在翻译软件帮助下及不断的上机实践下,我终于摸索出使用注册表接口(API)函数的一些用法,现拿出来与大家共享。  在程序中使用注册表,不外乎创建、打开、读取、设置、删除这五个常规操作,(要想获得更详细的资料可以参考Visual St...
2008-12-14 18:00 | 阅读 3878 次 | 评论 0 条

消息钩子函数入门篇

Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用钩子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握钩子的编程方法是很有必要的。 钩子的类型   一. 按事件分类,有如下的几种常用类型   (1...
2008-12-13 15:07 | 阅读 3295 次 | 评论 0 条

Windows NT/2000中获取窗口标题文本的更快速的方法 (转)

InternalGetWindowText函数为我们提供了获取Windows NT/2000系统中窗口标题的最快速的方法。它位于User32.dll。这个函数的功能类似于 GetWindowText,但是比GetWindowText快多了,因为它使用INT 2E 中断。InternalGetWindowText 是一个未公开的函数,它只能在Windows NT/2000 系统中使用,Windows 95/98系统中虽然也有这个函数,但只是摆摆样子而已,每次调用都返回错误代码 ERROR_CALL_NOT_IMPLEMENTED。 // fastgetwndtext.cpp (W...
2008-11-29 16:47 | 阅读 4370 次 | 评论 0 条

核心编程 第三部分 内存管理 堆栈

第18章 堆栈对内存进行操作的第三个机制是使用堆栈。堆栈可以用来分配许多较小的数据块。例如,若要对链接表和链接树进行管理,最好的方法是使用堆栈,而不是第1 5章介绍的虚拟内存操作方法或第1 7章介绍的内存映射文件操作方法。堆栈的优点是,可以不考虑分配粒度和页面边界之类的问题,集中精力处理手头的任务。堆栈的缺点是,分配和释放内存块的速度比其他机制要慢,并且无法直接控制物理存储器的提交和回收。 从内部来讲,堆栈是保留的地址空间的一个区域。开始时,保留区域中的大多数页面没有被提交物理存储器。当从堆栈中进行越来越多的内存分配时,堆栈管理器将把更多的物理存储器提交给堆栈。物理存储器总是从系...
2008-11-27 01:13 | 阅读 3144 次 | 评论 0 条

核心编程 第一部分 程序员必读 第2章 U n i c o d e

第2章 U n i c o d e随着M i c r o s o f t 公司的Wi n d o w s 操作系统在全世界日益广泛的流行,对于软件开发人员来说,将目标瞄准国际上的各个不同市场,已经成为一个越来越重要的问题。美国的软件版本比国际版本提前6 个月推向市场,这曾经是个司空见惯的现象。但是,由于各国对Wi n d o w s 操作系统提供了越来越多的支持,因此就更加容易为国际市场生产各种应用软件,从而缩短了软件的美国版本与国际版本推出的时间间隔。 Wi n d o w s 操作系统始终不逾地提供各种支持,以帮助软件开发人员进行应用程序的本地化工作。应用软件可以从各种不同的函数...
2008-11-27 01:11 | 阅读 3624 次 | 评论 0 条

第二部分 编程的具体方法 第6章 线程的基础知识

理解线程是非常关键的,因为每个进程至少需要一个线程。本章将更加详细地介绍线程的知识。尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用。还要介绍系统如何使用线程内核对象来管理线程。与进程内核对象一样,线程内核对象也拥有属性,我们将要观察许多用于查询和修改这些属性的函数。此外还要介绍可以在进程中创建和生成更多的线程时所用的函数。 第4章介绍了进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间。同样,线程也是由两个部分组成的: • 一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。 • 另...
2008-11-27 01:10 | 阅读 3286 次 | 评论 0 条

第四部分 动态链接库 第22章 插入DLL和挂接API (二)

22.4 使用远程线程来插入DLL 插入D L L的第三种方法是使用远程线程。这种方法具有更大的灵活性。它要求你懂得若干个Wi n d o w s特性、如进程、线程、线程同步、虚拟内存管理、D L L和U n i c o d e等(如果对这些特性不清楚,请参阅本书中的有关章节)。Wi n d o w s的大多数函数允许进程只对自己进行操作。这是很好的一个特性,因为它能够防止一个进程破坏另一个进程的运行。但是,有些函数却允许一个进程对另一个进程进行操作。这些函数大部分最初是为调试程序和其他工具设计的。不过任何函数都可以调用这些函数。 这个D L L插入方法基本上要求目标进程中的线程...
2008-11-27 01:09 | 阅读 6779 次 | 评论 0 条

第四部分 动态链接库 第22章 插入DLL和挂接API

在Microsoft Wi n d o w s中,每个进程都有它自己的私有地址空间。当使用指针来引用内存时,指针的值将引用你自己进程的地址空间中的一个内存地址。你的进程不能创建一个其引用属于另一个进程的内存指针。因此,如果你的进程存在一个错误,改写了一个随机地址上的内存,那么这个错误不会影响另一个进程使用的内存。 在Windows 98下运行的各个进程共享2 GB的地址空间,该地址空间从0 x 8 0 0 0 0 0 0 0至0 x F F F F F F F F。只有内存映像文件和系统组件才能映射到这个区域。详细说明参见第1 3、1 4章和第1 7章的内容。 独立的地址空间对于...
2008-11-27 01:07 | 阅读 3750 次 | 评论 0 条

第四部分 动态链接库 第21章 线程本地存储器

有时,将数据与对象的实例联系起来是很有帮助的。例如,窗口的附加字节可以使用S e t Wi n d o w s Wo r d和S e t Wi n d o w L o n g函数将数据与特定的窗口联系起来。可以使用线程本地存储器将数据与执行的特定线程联系起来。例如,可以将线程的某个时间与线程联系起来。然后,当线程终止运行时,就能够确定线程的寿命。 C / C + +运行期库要使用线程本地存储器( T L S)。由于运行期库是在多线程应用程序出现前的许多年设计的,因此运行期库中的大多数函数是用于单线程应用程序的。函数s t r t o k就是个很好的例子。应用程序初次调用s t r t...
2008-11-27 01:06 | 阅读 4318 次 | 评论 0 条

第四部分 动态链接库 第20章 DLL的高级操作技术

上一章介绍了D L L链接的基本方法,并且重点说明了隐含链接的技术,这是D L L链接的最常用的形式。虽然对于大多数应用程序来说,只要了解上一章介绍的知识就足够了,但是还可以使用D L L进行更多的工作。本章将要介绍与D L L相关的各种操作方法。大多数应用程序不一定需要这些方法,但是它们是非常有用的,所以应该对它们有所了解。 20.1 DLL模块的显式加载和符号链接 如果线程需要调用D L L模块中的函数,那么D L L的文件映像必须映射到调用线程的进程地址空间中。可以用两种方法进行这项操作。第一种方法是让应用程序的源代码只引用D L L中包含的符号。这样,当应用程序启动运行时...
2008-11-27 01:04 | 阅读 4424 次 | 评论 0 条

核心编程 第四部分 动态链接库 第19章 DLL基础

自从M i c r o s o f t公司推出第一个版本的Wi n d o w s操作系统以来,动态链接库( D L L)一直是这个操作系统的基础。Windows API 中的所有函数都包含在D L L中。3个最重要的D L L是K e r n e l 3 2 . d l l,它包含用于管理内存、进程和线程的各个函数; U s e r 3 2 . d l l,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数; G D I 3 2 . d l l,它包含用于画图和显示文本的各个函数。 Wi n d o w s还配有若干别的D L L,它们提供了用于执行一些特殊任务的函数...
2008-11-27 01:03 | 阅读 3044 次 | 评论 0 条

VC++开发的应用技巧三则

1、创建向导对话框   在使用具体某个软件的时候,我们常常会在该程序中使用向导模式来建立新的文件,最典型的例子就是在Frontpage2000中或者Word2000中使用向导方式来新建一个网页文件或者Word文档。那么看到别的程序都能提供人性化的向导对话框后,不知您有没有什么冲动?如果有的话,不妨使用下面的代码来创建一个向导对话框: 以下是引用片段:void CMy56_s1Dlg::OnWiz() { CSheet sheet; sheet.SetWizardMode(); int iRet=sheet.DoModal();//返回ID_WIZF...
2008-11-23 11:20 | 阅读 1830 次 | 评论 0 条

[转]VC++的菜单控制和自绘菜单

菜单控制 为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。 //Disable MFC from automatically disabling menu items. m_bAuoMenuEnable=FALSE; //Now enable the menu item. CMenu* pMenu=GetMenu (); ASSERT_VALID ...
2008-11-22 16:19 | 阅读 3962 次 | 评论 0 条

用VC设计托盘图标程序

在Windows操作系统中,任务栏的右边(托盘)会常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到具有托盘图标的软件,如金山词霸、实时监测功能的杀毒软件等。这些软件在后台运行,通常不占用太多的屏幕资源,只在通知栏上放一个小小的标志,必要时我们可以通过用鼠标点击图标对其进行选单操作或激活其主窗口。有时我们自己编写的程序也希望有类似的效果,本文将详细地介绍用VC设计托盘图标程序的方法。   一、 NOTIFYICONDATA结构   NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。其定义为:   ...
2008-11-22 16:09 | 阅读 4438 次 | 评论 0 条

[转]用VC++6.0编写Proxy服务器

常用的代理服务器软件有procy sever 2.0以及WinGate等等。利用VC 6.0强大功能也可以编写出自己的代理服务器应用软件。本文介绍了具体的实现方法。一. 原理 本程序的结构原理如下: 对于每一个用户的请求(Internet 请求,由浏览器发出),本程序将启动两个线程,一个把本地用户的请求数据发送到远程的Internet主机,另一个线程把远程主机的回应数据发送到本地请求用户。 二. 主要函数 UserToProxyThread ( void * pParam ) :它是用来把本地用户请求数据发送到远程主机的,起服务器线程角色。当接到本地(局域网)用户的请求,它就启动另一个自...
2008-11-22 16:08 | 阅读 3679 次 | 评论 0 条

VC中创建DLL动态连接库的方法

今天教大家在VC中创建DLL文件的方法步骤,一起来学习一下,并不是很难的,相信聪明的你一看就会。   一.Win32动态链接库   1.制作的步骤:   (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project类型。   (2)MyDll.h的内容如下: 以下是引用片段:  extern "C" _declspec(dllexport) int sum(int a,int b);//本文所有的例子只有一个sum即加法函数。   (3)MyDll.cpp的内容如下: ...
2008-11-22 16:05 | 阅读 2531 次 | 评论 0 条

[转]vc 开发简单的flash 播放器

1。新建一个基于对话框的程序,添加变量: int m_nTimer; //Timer时间控制 bool timerflag; //Timer启用的标志 bool screenflag; //全屏的标志 bool playflag; //有无文件打开的标志 CRect flashrect; //记录Shockwaveflash组件的矩形区域 WINDOWPLACEMENT m_FlashPos; //记录Shockwaveflash组件的状态 WINDOWPLACEMENT m_WndPos; //记录对话框窗口的状态 ...
2008-11-22 16:04 | 阅读 8946 次 | 评论 0 条