C/C++
文章平均质量分 68
johnny_83
占略
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Winxp下kernel32.dll内部的函数集合和地址值
Microsoft (R) COFF Binary File Dumper Version 6.00.8168Copyright (C) Microsoft Corp 1992-1998. All rights reserved.Dump of file c:/windows/system32/kernel32.dllFile Type: DLL Section contains the foll原创 2007-08-10 18:33:00 · 11550 阅读 · 3 评论 -
RTTI
3.1 static_cast用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所原创 2007-07-22 09:12:00 · 542 阅读 · 0 评论 -
四种启动其它程序的方法
有时我们的程序需要启动其它程序,可能是为了利用它已有的功能,也可能是为了达到某种需要。那么怎样来启动我们需要的程序呢?我暂时知道有4种方法:1、调用API: int system( const char *command ); 你可以传入一命令,启动某个程序。如"ping www.vczx.com", "YourExe"等等 不过这里有几点要值得注意: (1)、他不会立即返回,直到你启动的程原创 2007-07-22 09:19:00 · 1186 阅读 · 0 评论 -
System函数
int system( const char *command ); int _wsystem( const wchar_t *command ); command: Command to be executed sample: ``````````````//system.c #include void main( void ) { system( "type system.c" ); }原创 2007-07-22 10:35:00 · 1390 阅读 · 0 评论 -
Windows异常处理流程
先来说说异常和中断的区别。中断可在任何时候发生,与CPU正在执行什么指令无关,中断主要由I/O设备、处理器时钟或定时器等硬件引发,可以被允许或取消。而异常是由于CPU执行了某些指令引起的,可以包括存储器存取违规、除0或者特定调试指令等,内核也将系统服务视为异常。中断和异常更底层的区别是当广义上的中断(包括异常和硬件中断)发生时如果没有设置在服务寄存器(用命令号0xb向8259-1中断控制器0x原创 2007-07-22 10:56:00 · 1752 阅读 · 0 评论 -
微软ping命令的源代码
/******************************************************************************// * ping.c - Simple ping utility using SOCK_RAW * * This is a part of the Microsoft Source Code Samples. * Copyright 199原创 2007-07-22 20:55:00 · 667 阅读 · 0 评论 -
操作系统的环境变量存放在哪儿的呀?怎么样通过程序去得到
GetEnvironmentVariable ExpandEnvironmentStrings 支护船体SetEnvironmentVariable 系统的 hkey_local_machine////system////currentcontrolset////control////settion manager////environment 当前用户的 hkey原创 2007-07-22 21:14:00 · 1083 阅读 · 0 评论 -
让程序在同一台机器上互斥
在程序开始时创建互斥体: HANDLE hMutex = CreateMutex(NULL,true,/"CLOSESETTIME/"); if(GetLastError()==ERROR_ALREADY_EXISTS) { Application->MessageBox(/"“系统关机应用程序”在本机中//n/" /"已经打开,无须再打开!/", /"警告/", MB_OK原创 2007-07-22 21:18:00 · 613 阅读 · 0 评论 -
CPU信息的获得
最近到整理了一份CPU的信息,应该算是比较全面的吧。几乎现在所有的X86 CPU都内置了CPUID指令以辨别真伪,一些CPU厂商例如AMD,VIA等还内置了更加丰富的扩展CPUID指令,用着更方便了。下面我们利用Delphi来实现一个CPU检测的软件。CPUID的调用方式如下: asm push eax push ebx push ecx push edx mov eax,X//*********原创 2007-08-07 08:29:00 · 762 阅读 · 0 评论 -
理解Windows消息机制
Windows系统是一个消息驱动的OS,什么是消息呢?我很难说得清楚,也很难下一个定义(谁在嘘我),我下面从不同的几个方面讲解一下,希望大家看了后有一点了解。 1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高原创 2007-08-10 09:48:00 · 643 阅读 · 0 评论 -
Windows 消息机制(1)
消息中有什么?是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的原创 2007-08-10 09:55:00 · 686 阅读 · 0 评论 -
文件操作:实现 建立:读,写,删除 功能
#i nclude "stdio.h"#i nclude "stdlib.h"struct line{ char ``````text[81]; int num; /*行号*/ struct line *next; /*指向下一个输入项目的指针 */ struct line *prior; /*指向前一个项目的指针 */};struct li原创 2007-07-22 09:00:00 · 1045 阅读 · 1 评论 -
消息机制
消息机制是Windows应用程序的核心。在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的Windows应用程序都是消息驱动的,在Windows中,不同的消息由应用程序的不同部分进行处理。MFC库将很多底层的消息都屏蔽了,使用户更加方便、简易地处理消息。例如,用户接收到诸如移动鼠标键(WM_MOUSEMOVE)消息或单击鼠标键(WM_LRBUTTONDOWN)消原创 2007-08-10 09:58:00 · 718 阅读 · 0 评论 -
ASCII,Unicode, BSTR,LPSTR和LPWSTR转换...
一、BSTR、LPSTR和LPWSTR 在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。 那么什么是BSTR、LPSTR以及LPWSTR呢? BSTR(Basic STRi原创 2007-08-22 11:49:00 · 1931 阅读 · 0 评论 -
C++常用数据类型及其操作详解
一. VC常用数据类型列表二. 常用数据类型转化2.1数学类型变量与字符串相互转换2.2 CString及string,char *与其他数据类型的转换和操作●CString,string,char*的综合比较●数学类型与CString相互转化●CString与char*相互转换举例●CString 与 BSTR 型转原创 2007-08-22 11:51:00 · 2644 阅读 · 1 评论 -
ASSERT和VERIFY的区别
1 ASSERT与VERIFY宏在Debug模式下作用基本一致,二者都对表达式的值进行计算,如果值为非0,则什么事也不做;如果值为0,则输出诊断信息。2 ASSERT与VERIFY宏在Release模式下效果完全不一样。ASSERT不计算表达式的值,也不会输出诊断信息;VERIFY计算表达式的值,但不管值为0还是非0都不会输出诊断信息。VERIFY 与ASSERT用在程序调试上并无本质上的区原创 2007-08-22 13:01:00 · 1747 阅读 · 0 评论 -
几种VC++数据库开发技术的比较
从功能简单的数据库(如Jet Engine)到复杂的大型数据库系统(如oracle),VC++6.0都提供了一些编程接口。本文主要介绍以下五种:1.ODBC API; 2.MFC ODBC类; 3.MFC DAO类;(数据访问对象) 4.MFC的OLE/DB; 5.ActiveX数据对象(ADO)。1.开放数据库连接(ODBC API):提供了一个通用的编程接口,允许程序与多种不同原创 2007-08-22 14:12:00 · 938 阅读 · 0 评论 -
C++字符串完全指引之一 —— Win32 字符编码
引言 毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用法,并告诉您在必要时,如何实现各种字符串类型之间的转换。 在第一部分,我们将介绍3种字符编码类型。了解各种编码模式的工作方式是很重要的事情。即使你已经知道一个字符串是一个字原创 2007-08-22 12:59:00 · 971 阅读 · 0 评论 -
C++字符串完全指引之三 —— 字符串封装类续
MFC类CString 因为一个MFC CString类的对象包含TCHAR类型的字符,所以确切的字符类型取决于你所定义的预处理符号。大体来说,CString 很像STL string,这意味着你必须把它当成不透明的对象,只能使用CString提供的方法来修改CString对象。CString有一个string所不具备的优点:CString具有接收MBCS和Unicode两种字符串的构造函数,它原创 2007-08-22 13:05:00 · 960 阅读 · 0 评论 -
C++字符串完全指引之二 —— 字符串封装类
引言 因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标,所以出现了很多字符串封装类。不幸的是,在某些场合下我们不知道该使用哪个字符串类,也不知道怎样把一个C风格的字符串转换成一个字符串封装类。 这篇文章将介绍所有在Win32 API, MFC, STL, WTL 和 Visual C++ 运行库中出现的字符串类型。我将描述每一个原创 2007-08-22 13:09:00 · 939 阅读 · 0 评论 -
系统通过DLL文件顺序
系统通过DLL文件的名称,试图加载这个文件到进程地址空间时,它寻找DLL 文件的路径按照先后顺序如下:·程序运行时的目录,即可执行文件所在的目录;·当前程序工作目录·系统目录:对于Windows95/98来说,可以调用GetSystemDirectory函数来得到,对于WindowsNT/2000来说,指的是32位Windows的系统目录,也可以调用GetSystemDirectory函数来得到原创 2007-11-08 11:43:00 · 1109 阅读 · 0 评论 -
BCB操作BLOG字段的方法
/** * 把图像保存到SQL Server数据库中 */ OpenDialog1->FileName=""; if (OpenDialog1->Execute()){ Edit1->Text= OpenDialog1->FileName; Image1->Picture->LoadFromFile(Edit1->Text);}if (!Edit1->Text.IsEmpty原创 2008-03-27 14:59:00 · 1305 阅读 · 0 评论 -
C++实现文件删除
我在程序中使用的删除文件夹的方法,不知对你有没有帮助 bool DeleteDirectory(AnsiString DirName) { //该函数删除一个非空的目录DirName SHFILEOPSTRUCT filestruct; memset(&filestruct,0,sizeof(filestruct));原创 2007-07-22 09:02:00 · 4564 阅读 · 1 评论 -
如何简单实现可执行文件的自我删除
如何简单实现可执行文件的自我删除可执行文件即 EXE 文件在运行过程中,由系统管理其打开的句柄。此时对该文件的一些操作是被系统禁止的,比如删除操作。然而在某些场合,可能须要程序有自我删除的功能,也就是程序运行结束后删除自身。基于这个想法,可以有一种很简单的方法来实现这个基本功能。 本方法基于两点来实现删除功能。一是利用 windows 的 command program 的删除文件操作;再者就是启原创 2007-07-22 09:00:00 · 852 阅读 · 0 评论 -
Alloctor--- C++标准库函数
C++标准库中的Allocator有一个复杂而低层次的接口[注1]。和new与delete不同,它们将内存分配与对象构造解耦。和malloc与free不同,它们要求你明确正在分配的内存的数据类型和对象数目。 通常,这不成为问题。Allocator拥有低层次的接口是因为它们是低层次的概念:它们通常隐藏在容器类内部,而不属于普通用户的代码。然而,有时你可能不得不关心allocator:当你自原创 2007-07-22 09:07:00 · 1599 阅读 · 0 评论 -
ShellExecute
ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。首先必须引用shellapi.pas单元:uses ShellAPI;1.标准用法 ShellExecute函数原型及参数含义如下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: I原创 2007-07-22 09:14:00 · 673 阅读 · 0 评论 -
DLL函数
关于DLL的函数: 动态链接库中定义有两种函数:导出函数(export function)和内部函数(internal function)。 导出函数可以被其它模块调用,内部函数在定义它们的DLL程序内部使用。 输出函数的方法有以下几种: 1、传统的方法 在模块定义文件的EXPORT部分指定要输入的函数或者变量。语法格原创 2007-07-22 09:22:00 · 1169 阅读 · 0 评论 -
函数调用方式:_cdecl, _stdcall,_fastcall, thiscall,naked call
函数参数入栈的方式 --------------------------------------------------------------- 在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式.比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用 ----原创 2007-07-22 10:29:00 · 713 阅读 · 0 评论 -
C++ sizeof 使用规则及陷阱分析
C++ sizeof 使用规则及陷阱分析1、什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable Or a type (including aggregate types). This keyword retur原创 2007-07-22 10:32:00 · 1081 阅读 · 0 评论 -
预处理指令的详解
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Pa原创 2007-07-22 10:47:00 · 682 阅读 · 0 评论 -
实现鼠标穿透能力
//实现鼠标穿透能力// SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE)// | WS_EX_LTRREADING | WS_EX_TRANSPARENT | WS_EX_TOPMOST// | WS_EX_TOOLWINDOW | WS_EX_LAYERED);原创 2007-07-22 21:05:00 · 1531 阅读 · 0 评论 -
对话框隐藏的简单实现
有时候想让一个对话框一启动就隐藏,有好多方法可以实现,但效果都不理想,总是可以看到对话框一闪而过的痕迹。有没有一个方法彻底的将其隐藏呢,答案是肯定的,以下就是一个简单的实现方法。 首先要用到的是ModifyStyleEx函数,用于修改窗口的扩展属性,该函数的原型是: BOOL ModifyStyleEx( DWORD dwRemove,//要移出的属性原创 2007-07-22 21:11:00 · 1135 阅读 · 0 评论 -
让窗口透明起来
SetLayeredWindowAttributes是windows的新api,win2000以上才支持,它能使使窗体拥有透明效果.Windows NT/2000/XP: Included in Windows 2000 And later. Windows 95/98/Me: Unsupported. Header: Declared in Winuser.h; include Windows.原创 2007-07-22 21:13:00 · 1211 阅读 · 0 评论 -
怎样在C++中建立删除一个文件
问题是这样的:1.设计一个N个用户的文件系统,每个用户最多保存m个文件。 2.限制用户在一次使用中只能打开L个文件。3.系统应能检查输入命令的正确性,出错能显示出原因。4.对文件必须设置保护措施,如只读、写、执行等。在每次打开时再次设置保护级别,即可有二级保护。5.对文件的操作至少有以下几条命令create:建文件delete:删文件open:打开文件close:关闭文件read:读文件write原创 2007-07-22 08:59:00 · 3973 阅读 · 0 评论 -
Windows下DLL编程技术及应用
摘 要: 本文介绍了DLL技术在Windows编程中的基本运用方法及应用,给出了直接内存访问及端口I/O的两个实用DLL的全部源代码。 一 、引 言 由于Windows为微机提供了前所未有的标准用户界面、图形处理能力和简单灵便的操作,绝大多数程序编制人员都已转向或正在转向Windows编程。在许多用户设计的实际应用系统的编程任务中,常常要实现软件对硬件资源和内存资源的访问,例如端口I/O、原创 2007-07-22 09:23:00 · 570 阅读 · 0 评论 -
构造器 explicit
explicit关键字用来修饰构造函数,为了防止隐式使用拷贝构造函数的。对下面的例子:class T{public: explicit T(){}; //没有效果。因为default constructor不会参加隐式转换 explicit T(int i){}; //good explicit T(int i, double){}; //没有效果。因为本construct原创 2007-07-22 10:30:00 · 611 阅读 · 0 评论 -
C/C++中的日期和时间
摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念在C/C++中,对字符原创 2007-07-22 10:31:00 · 589 阅读 · 0 评论 -
VB让窗体始终处于最前面
应用SetWindowPos函数可以设置一个窗口的位置和状态,本例正是利用此函数来把一个窗体放在所有窗体之上,使之总是处于最前面。 我们先来看看SetWindowPos函数的定义和参数: 使用API函数之前必须先在程序中声明如下:Private Declare Function SetWindowPos Lib /"user32/" (ByVal hwnd As Long, ByVal hW原创 2007-07-22 20:57:00 · 9414 阅读 · 0 评论 -
实现全屏对话框
SetWindowLong(hWnd,GWL_STYLE,GetWindowLong(hWnd, GWL_STYLE)&~WS_MAXIMIZEBOX); // 去掉WS_MAXIMIZEBOX风格ShowWindow(hWnd, SW_MAXIMIZE); // 最大化显式窗口如果再加上TOPMOST属性,一般的全屏要求也就如此了吧。原创 2007-07-22 21:12:00 · 804 阅读 · 0 评论 -
自动截屏到文件的小程序
(一)功能实现了一个定时截取当前屏幕图像的小程序。(二)准备工作1)建立VC CONSOLE APPLICATION,选择MFC SUPPORT2)在STDAFX.H文件中加入头文件:conio.h(三)主程序主程序代码如下: char Filename[100]; int count = 0; while(!_kbhit())//用户按键则退出原创 2007-07-22 09:04:00 · 1101 阅读 · 0 评论
分享