用C++ Bulider在WIN.INI中保存信息
现在许多软件把程序中需要的数据保存在注册表中,这样当用户装的软件越来越多时,致使注册表越来越庞大,容易使系统出错。当然,微软也建议在注册表中保存数据,但当我们需要保存的数据不多时完全可以把数据保存在WIN.INI中,这样可以很方便地维护,实现方法相对来说比较简单。下面我以Borland C++ Builder为例来说说如何 ...
对C++程序内存管理的精雕细琢
应用程序分配内存的方法,对程序的执行性能有着深刻的影响。目前,通用的内存分配方法本质上已非常高效,但仍有改进的空间。
内存分配,不可一层不变
今天,对绝大多数程序来说,通用的内存分配方法--此处指代分配算符(Allocator:即malloc或new),已达到了理想的速度及满足了低碎片率的要求,然而,在内存分配领域,一丁 ...
C++数据类型的属性与限制
在C++中,每一种内置的数据类型都拥有不同的属性,其中包含的信息对设计程序来说是非常重要的,下面来看一下,库是怎样有助于访问这些信息的。
C++中约有10种截然不同的整数类型及超过3种的浮点类型,而每种数据类型都有不同的数值属性,如数值范围、能表示的最大位数、或各自的精度等等,这些属性对金融、科学、图形、数字 ...
CB下实现对端口读写的两种方法
在C++Builder中,不能够使用Turbo C中的outputb和inputb端口读写函数。但我们可以有另外两种办法实现这个功能。本文介绍怎样在C++Builder下实现端口读写,并给出两种方法的源代码。
在C++Builder下对端口的读写共有两种方法,一种为内嵌汇编语言,另一种为使用__emit__函数。
1 通过内嵌汇编语言实现端口的读写
在C++Builde ...
API之控件与消息函数
CB中消息处理过程及应用
C++ Builder作为一种RAD方式的程序开发工具,其全新的可视化编程环境、面向组件的开发模式无疑会大大地提高编程效率。它对繁杂的Windows 消息及API作了较全面的封装,编程者在大多数情况下不需理会Windows消息的细节,只要将心思放在组件的事件处理函数上即可。然而,毕竟Windows操作系统是一个以消息驱动的系统,运行其上 ...
深入VCL理解BCB的消息机制1
本文所谈及的技术内容都来自于Internet的公开信息。由CKER在闲暇之际整理后,贴出来以飴网友,姑且妄称原创。
『每次在国外网站上找到精彩文章的时候,心中都会暗自叹息为什么在中文网站难以觅得这类文章呢?其实原因大家都明白。』
时至今日,学习Windows编程的兄弟们都知道消息机制的重要性。所以理解消息机制也成了不可 ...
C++ Builder中应用GDI实现虚拟台屏
引言
台屏的操作是控制实现的常规操作,但是由于台屏本身固有的原因,存在一些问题,如:成本高,易损坏,维修难等。所以计算机虚拟台屏已经成为合适的替代品。在仿真领域,台屏的计算机虚拟更成为较好的一种方法。在计算机虚拟台屏的软件编制中,由于台屏的特殊性,使软件的编制存在一些相应的难点,如台屏图像的缩放、漫 ...
任务条状态区的应用
Windows95的任务条(Taskbar)上有一个状态区,可以显示当前输入法(中文版)、当前时间等信息,当启动打印管理器时还可显示打印管理器的图标,表明打印机正在工作。我们可以使用这一技术为正在后台工作的程序设置一个图标,以显示它的工作状态,用户可以通过鼠标点击来查询详细情况或修改工作参数。下面对其实现方法作一介绍。
图标 ...
设置壁纸方法
通过IActiveDesktop接口来实现
比如设置壁纸,就可以这样
IActiveDesktop *a;
CoInitialize(NULL);
if(SUCCEEDED(CoCreateInstance(Shlobj::CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,(void **)&a)))
{
WideString c = "C:\\My Documents\\yw2.jpg";
OleCheck(a->SetWallpaper(c.c_bstr( ...
如何监视剪贴板
在Form1的.h的private加上:
void __fastcall ClipboardChanged(TMessage& Msg);
在Form1的.h的public加上:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DRAWCLIPBOARD,TMessage,ClipboardChanged)
END_MESSAGE_MAP(TForm)
在Form1的.cpp内加上:
void __fastcall TForm1::ClipboardChanged(TMessage& Msg)
{
POINT MousePos ...
WinNT及Win2K下实现进程的完全隐藏
面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助。
关于进程的隐藏,98下的例子数不胜数。WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网上发布出实例《揭开木马的神秘面纱》 ,我也多次拜读他的文章,对 ...
关机代码
//Win2000&WinNT实现的代码
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken))
{
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp. ...
C++ BUILDER让任务栏图标动起来
在windows环境下上网时,你有没有注意到在屏幕的右下脚的任务栏上有一个动画图标呢?它一闪一闪的,形象的表示出网络此时正在传输数据。关于任务栏图标编程的文章有不少,可是如何才能编制出动态图标呢?在C++Builder中可以比较方便的实现。
其基本编程思路是:通过设置Timer时钟控件使应用程序在规定的时间间隔内发送特定 ...
动态汉化Windows技术原理分析
陷阱"技术探秘──动态汉化Windows技术的分析
四通利方(RichWin)、中文之星(CStar)是大家广为熟知的汉化Windows产品,"陷阱"技术即动态修改Windows代码,一直是其对外宣称的过人技术。本文从Windows的模块调用机制与重定位概念着手,介绍了"陷阱"技术的实现,并给出了采用"陷阱"技术动态修改Windows代码的示例源程序。
一、发现 ...
服务器与客户机互传消息
一、服务器程序
创建一个名为“server"的项目,单文档界面。
在serverview.h中加入代码:
#include“winsock.h"
添加变量:
CSize sizeTotal;// 控 制 滚 动 条
int count;// 信 息 条 数
CString m_data[1000];// 信 息 存 放
char Hostname[260];
...
C++ Builder中实现拖放功能
Windows中的拖放功能大家一定很熟悉了,如文件的转移,拷贝等操作用鼠标轻轻一拖即可,在编写程序中有时也用到拖放,那么如何实现呢?现以C++ Builder5(简称CB5)为例,分析拖放功能的具体实现。
一.工具条的拖放
---- 要实现拖放功能,首先必须了解几个与拖放有关的属性和方法, 对于TControl控件,CB5提供了三个属性,D ...
如何获取屏幕保护程序的密码
大家都知道,windows9x只是一个桌面操作系统,它的稳定性和保密性一直受大家的批评。现在,我就通过介绍提取windows98的屏幕保护程序的密码的算法来说明windows98的保密性是怎样的差!
一、屏幕保护程序(以下简称屏保)密码的加密算法
通常,评价一个加密算法,就要看密钥怎么产生,加密算法是否强大。windows98的屏保密码 ...
Winsock API函数大全3
本系统(WinKing)提供之 Windows Sockets API 介面乃是依照 1993年1月20日公布之 WINSOCK 第1.1版(如附录)中所定义之函式 (routine); 包括了30个Berkeley Software Distribution (BSD) 的函式以及16个符合 Windows Message-driven 特性的函式。
(21) setsockopt():设定 Socket 的状态。
格式: int PASCAL FAR setsockopt( ...
用C++Builder在Windows开始按钮上绘图
熟悉Windows操作系统的软件设计人员知道,在Win95/98/NT/2000中有一任务栏(Task Bar)程序,路径为:C:\WINDOWS\SYSTEM\SYSTRAY.EXE(假设你的Windows安装在系统默认路径C:\WINDOWS)。从系统功能角度分析,任务栏由几个不同的子区域组成,从左至右依次是:开始(Start)按钮、应用程序切换区(Application Switch Bar)、 ...