如题:
解决方案 »
- 怎么改变TApplication类名?
- 关于LISTVIEW中记录颜色改变,在线等,急~!!!!!
- 我在使用fastreport3.18时的问题!!
- 升星,散分。
- 请问那位大侠知道文件被删除后还可以被还原是什么原理?
- 作一个这样的数据库程序难吗?有没有类似的,给看看。
- 如何制作象WINDOW98那样的开始菜单,也就是在左过有一竖条的(图片或文字)
- 请教FormatDateTime()函数的参数,怎样去定义日期格式?
- 给timer传递一个object,让timer实现每隔1秒移动object一次...
- 急急急,如何用Query对lookup进行查询?????
- 我做好的ACTIVEFORM控件为啥在客户端没有自动更新下载新的版本
- 哪有神龙卡开发包.
st:integer;
st:= GetWindowLong(hd ,GWL_EXSTYLE); //hd为windows的handle
st:=st or WS_EX_TOOLWINDOW;
SetWindowLong(hd,GWL_EXSTYLE,st);
ShowWindow(hd,SW_HIDE);
ShowWindow(hd,SW_SHOW);将它显示出来
-----很多hack程序都是通过这种方法隐藏的---------------
然后点击托盘时置为true,你可以在网上找一下关于托盘程序实现的,有很多。
主要是调用了api。
实战演练: 一.新建一个应用程序:File->New Applicaton 在Interface部分定义一个消息常量:const WM_NID=WM_USER+1000; 系统规定从WM_USER开始为用户自定义消息。 二.定义一个全局变量: NotifyIcon:TNotifyIconData 三.双击主窗体,进入FormCreate的代码区域:TForm1.FormCreate(Sender:TObject);Begin//NotifyIcon为全局变量,在程序的开头已经定义了
with NotifyIcon dobegincbSize:=SizeOf(TNotifyIconData);Wnd:=Handle; //指向当前窗体Form1的句柄uID:=1;uFlags:=NIM_ICON or NIM_MESSAGE or NIM_TIP;uCallBackMessage:=WM_NID;hIcon:=Application.Icon.Handle;szTip:='dd';end;.//把设置好的变量NotifyIcon加入到系统中以便处理Shell_NotifyIcon(NIM_ADD,@NotifyIcon);End;
四.接下来就是定义一个消息处理函数:系统给窗体发来了一个消息,就由下面这个函数来处理。每个消息处理函数都是处理某一类消息的,大家仔细地看看下面函数体的定义和一般的函数定义有什么不一样:消息处理函数要在后面加上消息的名称,这样当系统发来WM_NID消息时,就是自动触发WMNID消息处理函数。procedure WMNID(var msg:TMessage);message WM_NID;begincase msg.LParam ofWM_LBUTTONUp; Form1.Visible:=not Form1.Visible;WM_RBUTTONUP: ShowMessage(‘您点击的是右键’);End;End;
TForm1.FormDestroy(Sender:TObject);BeginShell_NotifyIcon(NIM_DELETE,@NotifyIcon);End;
Application.Initialize;
Application.ShowMainForm:=False;//不显示主窗体
Application.Run;
在主窗体中注册热键,如下一个模版。。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
HKeyID:ATOM;//热键标识
procedure HotKeyMSG(var Msg:TMessage);message WM_HOTKEY;//捕捉热键消息
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
HKeyID:=GlobalAddAtom(PChar(Application.ExeName));//获得唯一热键标识
RegisterHotKey(Handle,HKeyID,MOD_ALT or MOD_CONTROL,Ord('Y'));//注册热键标识
//Ctrl+Alt+Y
end;procedure TForm1.HotKeyMSG(var Msg: TMessage);
begin
if Msg.WParam = HKeyID then
begin
if Self.Showing then//如果正显示则隐藏
Hide
else
Show;
end;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
//清理工作
UnregisterHotKey(Handle,HKeyID);
GlobalDeleteAtom(HKeyID);
end;end.