如题
本人注册了热键ALT+Z
按下ALT+Z
ShowWindow(Hwnd,SW_HIDE) 隐藏窗口
再按ALT+Z
ShowWindow(Hwnd,SW_SHOW) 却无法显示窗口因此求可行代码一段
本人注册了热键ALT+Z
按下ALT+Z
ShowWindow(Hwnd,SW_HIDE) 隐藏窗口
再按ALT+Z
ShowWindow(Hwnd,SW_SHOW) 却无法显示窗口因此求可行代码一段
解决方案 »
- delphi调用vc写的.dll时的问题
- 有没有哪位用过DBISAM 这个数据库控件的?如何修改表的密码..?
- 随机数问题,大家帮忙
- 关于 sql server 表字段的属性问题,,各位帮帮忙吧,
- DBGrid1中某一列的宽度能不能动态给出?
- 类型转换的怪问题!!!
- 对delphi类中属性的疑问,UP有分~~!各位谈谈吧
- 利用Socket Server实现的三层结构,如果在服务器端获得客户端的连接信息?
- 怎样将字体文件加入程序?
- 请问delphi 6.0的 SN密码?急急急
- imagelist控件只能加载bmp,ico图片?
- 用了Oratable 代码如下运行出现错误提示:Oratable:Can't modify a read-only dataset.求解。
在消息处理中,可以隐藏窗口,可以使用Form.Hide;也可以使用SetWindowPos API函数
显示的时候只要把Form调到前台。
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.
用TActionList最简单了