API之位图、图标和光栅运算函数
Windows管道技术简述
不知你是否用过这样的程序,他们本身并没有解压缩的功能,而是调用DOS程序PKZIP完成ZIP包的解压缩。但是在程序运行时又没有DOS控制台的窗口出现而且一切本应该在DOS下显示的信息都出现在了那个安装程序的一个文本框里。这种设计既美观又可以防止少数眼疾手快的用户提前关了你的DOS窗口。
现在就来讨论一下,如何用匿名管道 ...
确定一个应用程序是否没有响应
今天在MSN的核心讨论组上看到两篇文章.讨论的乃是应用程序是否没有响应.原文如下:
> How is it possible to determine a process is "not responding" like NT Task
> Manager do?
The heuristic works only for GUI processes, and consists of calling
SendMessageTimeOut() with SMTO_ABORTIFHUNG.
>There is any API ca ...
使用Windows系统提供的IP控件
在网络程序中,我们常常碰到需要用户输入IP地址的情况。然而C++ Builder并没有为我们提供可以用于输入IP串的控件,于是我们只好用TEdit控件(单行文本框)来接受用户输入的IP串。但是,使用TEdit来输入IP串并不是一个好的主意,因为处理起来非常不方便。事实上,在我们的身旁有一个专门用来输入IP串的Windows控件,就象网络 ...
获取WinNT/Win2k当前用户名和密码
在Win2k下试验成功.
// 获取WinNT/Win2k当前用户名和密码,调用以下函数即可:
// bool GetPassword(String &strCurrDomain, String &strCurrUser, String &strCurrPwd)
//---------------------------------------------------------------------------
typedef struct _UNICODE_STRING
{
USHORT Length;
USHORT Max ...
记录键盘的动作和敲击按键时的时间
日志钩子代码如下,你慢慢品味吧:
//-----------.cpp文件
//---------------------------------------------------------------------------
#include
#include
#pragma hdrstop
#include "KeyHookU.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
# ...
在Windows桌面创建快捷方式
注:偶在Windows ADV 2000,C++ Builder 6.0下编译通过.
API提供了一个叫做IShellLink的COM接口允许我们创建快捷方式。为在桌面创建快捷方式,我们创建一个IShellLink对象,设置它的属性,然后把这个link保存到desktop目录。
下面的例子代码演示了怎样创建一个快捷方式。在这个例子里,这个快捷方式保存在C:\根目录下。
#de ...
C++Builder中动态库的链接问题
动态库链接到应用程序中主要有两种方式:隐式链接和显式链接。隐式链接是常用方式。
如果应用程序和动态库是分别在不同开发平台上编制的,动态库的导入库(lib文件)可能会与应用程序的开发平台所要求的导入库格式不相容,从而在应用程序与动态库隐式链接时,出现程序链接错误:contains invalid OMF record。例如在C++Buil ...
在Win2k下操作有权限限制的注册表键
在2k系统操作注册表时,发现某些健必须要有权限问题;
察看各位大大的贴,可惜没有一个合适的结果;
有人说:可以提高使用者权限;但是事实上好像不是很好用;
经过艰苦.艰苦.艰艰苦苦;终于在msdn上找到了一些好动动;
不敢独享,(哎,我可不想某人,好东西藏到自己都忘了的地方)
整理出来一些对某些人有用的东西:嘿嘿,代码如 ...
用快照枚举当前系统中所有进程
如何用快照枚举当前系统中所有进程,近来问这个问题的朋友比较多,所以干脆贴上来算了。呵呵。
在窗体上添加一个ListView,设置其ViewStyle为vsReport,在ListView上添加三个Column,再添加一个Button。
#include
#include "stdio.h"
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
// Find each proce ...
用键盘全局钩子Hook监视多进程键盘操作
闲来无事,在WIN2K下用BCB5做了个键盘挂钩小程序,监视全局按键情况。Hook安放和回调函数放在一个单独DLL中,DLL原码如下:
//----------------------------------------------------------------------------------------------------
extern "C" __declspec(dllexport) void __stdcall SetHook(HWND,bool);
LRESULT CALLB ...
利用DelayLoad来优化应用程序的性能及拦截API
在 1998年12月的MSJ出版刊物中, Jeffrey和我写了关于 在 vc6中使用DelayLoad 功能的专栏.最终结果,是证明了它是多么cool.但是,不幸的是,还有很多人不了解DelayLoad,他们以为这个新特点是 最新版本的WINNT才有的.
在开始的时候,让我重申一遍elayLoad不是最新的操作系统带的特有功能,它可以在任何win32系统中起作用.我将写 ...
C++Builder定制系统菜单
通常在应用程序的主窗体中,利用鼠标左键点击左上角的图标,会弹出一个菜单,称之为“系统菜单”。
在窗体中并没有系统菜单对应的组件,所以有时我们需要定制系统菜单时就比较麻烦。具体可以能过下面的步骤实现:
.在系统菜单上添加所需的菜单项。
.为新添加的菜单项定义OnClick事件的处理过程。
下面的例程中,在系统菜单 ...
通过消息实现自定义输入框(InputBox)
C++Builder提供了两个显示输入对话框的函数:InputBox和InputQuery(其中InputBox也是通过调用InputQuery实现),这个输入对话框有很多缺点,在以前的文章中我曾提到过利用修改VCL源码来实现自定义输入对话框,后来在Torry.net看到一篇文章是利用自定义消息的方法来实现,原文是Delphi代码,ccrun(老妖)用C++改写,并适当修改 ...
玩转BCB的IDE 体验ToolsAPI
大多数BCB程序员也许一辈子都不用关心Toolsapi,但如果象我一样无聊的话,
不妨玩玩和讨论一下:
看看下面的程序,来把IDE变个样:
--->BCB5。0
//---------------------------------------------------------------------------
#include
#pragma hdrstop
USERES("nodebug.res");
USEPACKAGE("vcl50.bpi");
//----------- ...
判别剪贴板上所有可用的格式
注:此文中程序原为VB书写.老妖改为CB版.
如果你想知道剪贴板上是否包含来自excel的数据,或者你想判别rich text格式是否可用以激活粘贴菜单时,以下程序可以告诉你如何判别当前剪贴板上所有可用的格式,包括自定义格式。
// Unit1.cpp 开始-----------------
//--------------------------------------------------------- ...
获取信息的有关Windows API
1.窗口信息
MS为我们提供了打开特定桌面和枚举桌面窗口的函数。
hDesk = OpenDesktop(lpszDesktop, 0, FALSE, DESKTOP_ENUMERATE);
// 打开我们默认的Default桌面;
EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc, 0);
// 枚举打开桌面上的所有窗口,由回调函数实现。
BOOL __stdcall EnumWindowProc(HWND, LPARAM) ...
如何获得CPU使用率
NT/2000方法:
#include
#include
#include
#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
typedef struct
{
DWORD dwUnknown1;
ULONG ...
Windows 95多线程间同步事件的控制方法
摘要:在Windows 95中所有的应用程序实际上都以是线程的方式运行的。在设计多线程应用程序中有时必须在线程之间保持一定的同步关系,才能使用户能够对独立运行的线程进行有效的控制。为此本文在简要介绍Windows 95中线程的概念及其创建方法后,提出了一种在多线程之间利用 event对象实现事件同步的控制方法。最后还介绍了在 ...
BCB中Corba Name Service使用方法
由于在尝试用BCB 4访问NameService时,遇到了一些奇奇怪怪的问题,而Visibroker所带的例子却可以用bcc32正常编译运行,俺决定从头做一个程序看看问题出在哪里。折腾了一夜,结论是做服务器还是不用Corba Server wizard好。(我还是不明白为什么?)
1、File| New, Multitier,Corba IDL File:
interface Order{
string Na ...