这是一个放到后台的监控程序,由一个FORM,两个BOTTON组成,所实现的功能只是:按下CTRL+ALT+DEL时看不到进程,按其中一个按钮可以把此FORM隐藏,按另一个按钮退出程序。
unit Unit1; 
interface 
uses 
Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls; 
type 
TForm1 = class(TForm) 
Button1: TButton; 
Button2: TButton; 
procedure FormCreate(Sender: TObject); 
procedure Button1Click(Sender: TObject); 
procedure Button2Click(Sender: TObject); 
procedure FormClose(Sender: TObject; var Action: TCloseAction); 
private 
{热键标识ID} 
id: Integer; 
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; 
{ Privat-Declarations} 
public 
{ Public-Declarations} 
end; 
var 
Form1 : TForm1; 
implementation 
const RSP_SIMPLE_SERVICE=1; 
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’KERNEL32.DLL’; 
{$R *.DFM} {捕获热键消息} 
procedure TForm1.WMHotKey (var Msg : TWMHotKey); 
begin 
if msg.HotKey = id then 
ShowMessage(’Ctrl+Alt+R键被按下!’); 
form1.Visible :=true; 
end; procedure TForm1.FormCreate(Sender: TObject); 
Const 
{ALT、CTRL和R键的虚拟键值} 
MOD_ALT = 1; 
MOD_CONTROL = 2; 
VK_R = 82; 
begin 
{首先判断程序是否已经运行} 
if GlobalFindAtom(’MyHotkey’) = 0 then 
begin 
{注册全局热键Ctrl + Alt + R} 
id:=GlobalAddAtom(’MyHotkey’); 
RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,VK_R); 
end 
else 
halt; 
end; 
   {把当前进程变为一个系统服务,从而在任务列表中把程序隐藏起来} 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE); 
form1.Hide; 
end; procedure TForm1.Button2Click(Sender: TObject); 
begin 
close; 
end; 
{退出时释放全局热键} 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
UnRegisterHotKey(handle,id); 
GlobalDeleteAtom(id); 
end; 
end. 
 
1.什么是钩子函数?
2.Const 
{ALT、CTRL和R键的虚拟键值} 
MOD_ALT = 1; 
MOD_CONTROL = 2; 
VK_R = 82; 
delphi帮助中的虚拟键值表都是以vk_开头的,没见MOD_开头的。
MOD_ALT
MODCONTROL指的是什么呢?我将MOD改为了VK并运行了一下,可以实现例子所说的功能。
3.在窗体上双击按钮会跳到按钮的click过程中写代码,双击窗体会跳到窗体的CREATE过程中编写代码,但好多时候不仅仅只需要这两种过程,还要其它的,比如窗体关闭时需要一个过程,或者有时要写一些过程,而这些过程和按钮,窗体之类的无直接关联,但又要在这个软件中用到,那这些过程名字不会自动生成吗?如果不能直接生成,那这些过程的名字需要怎么写呢?必须要写tform1.XXX?
 
暂时不知道点数拿来做什么用的,但由于我是一个问题很多的新手,所以比较吝啬,呵呵,不过估计热心的朋友们在论坛回答问题并不是为了一点区区的分数。谢谢了哈!

解决方案 »

  1.   

    1.什么是钩子函数?
    钩子函数用于捕获系统消息,win32是个消息系统你明白吧??(不明白?晕看看书先)
    2.mod开头的是辅助键值,单词是modificatory
    3.你是要自定义函数过程吧,你可以定义到一个公共的PAS中作为一个公共的单元也可以直接在form内类进行定义,如果在form类进行定义,则是form类的函数,你可以设为私用,公共,保护的属性..建议先看书.这些都是基础知识啊...
      

  2.   

    我发誓:我看的书中并没有讲。问问题之前我还仔细看过书,《DELPHI6。0最佳专辑》
    PS:谢谢。