永发信息网

delphi 隐藏运行程序,按某按键后调出来仍继续运行

答案:3  悬赏:80  手机版
解决时间 2021-03-20 11:03
我想做个程序,开机后台运行(隐藏起来),比如用ctrl+F2组合键调出来 但程序不会因此而关闭,调到前台来继续运行
最佳答案
需要使用热键方式来实现此功能,在热键事件中添加显示窗口的代码,以下为以为写过的一个类似程序的关键代码:
//主窗口Visible属性设置为false则启动时不显示主窗口。
private
    { Private declarations }
    HotKeyId: Integer; //热键ID
    procedure hotkey(var msg:tmessage);message wm_hotkey; //热键事件
//窗口创建事件中添加热键
procedure TForm1.FormCreate(Sender: TObject);
begin
  HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
  if HotKeyId = 0 then
  begin
    close;
  end;
  //热键为ctrl + F8
  if(not RegisterHotKey(Handle, hotkeyid, MOD_CONTROL, VK_F8))then
    close;
end;
//热键事件 显示主窗口
procedure TForm1.hotkey(var msg:tmessage);
begin
  if (Msg.LparamLo = MOD_CONTROL) AND (Msg.LParamHi = VK_F8) then
  begin
    form1.Show ;
  end;
end;
//退出时取消热键
procedure TForm1.FormDestroy(Sender: TObject);
begin
  globalDeleteatom(HotKeyId);
end;
全部回答

在dpr文件里面设置:

program project1; uses forms, unit1 in 'unit1.pas' {form1}; {$r *.res} begin application.initialize; application.showmainform := false; //设置主窗体不显示,达到隐藏运行的效果 application.createform(tform1, form1); application.run; end.

form创建的时候(即create事件),安装一个全局键盘钩子用来截获按键消息。 设置一个boolean类型的公共变量,用来标记窗口是否显示或隐藏

var isformshow: boolean;

当截获到ctrl+f2消息时

if isformshow then begin showwindow(form1.handle, sw_hide); showwindow(application.handle, sw_hide); isformshow := false; end else begin showwindow(form1.handle, sw_restore); showwindow(application.handle, sw_restore); isformshow := true; end;

//关于delphi全局键盘钩子的资料,网上很多,拿来可以直接用。

在dpr文件里面设置: program Project1; uses   Forms,   Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin   Application.Initialize;   Application.ShowMainForm := false;  //设置主窗体不显示,达到隐藏运行的效果   Application.CreateForm(TForm1, Form1);   Application.Run; end.Form创建的时候(即Create事件),安装一个全局键盘钩子用来截获按键消息。 设置一个boolean类型的公共变量,用来标记窗口是否显示或隐藏 var   isformshow: Boolean; 当截获到ctrl+F2消息时 if isformshow then begin    ShowWindow(Form1.Handle, SW_HIDE);   ShowWindow(Application.Handle, SW_HIDE);   isformshow := false; end else begin   ShowWindow(Form1.Handle, SW_RESTORE);   ShowWindow(Application.Handle, SW_RESTORE);   isformshow := true; end; //关于delphi全局键盘钩子的资料,网上很多,拿来可以直接用。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
陆游《夜泊水村》赏析
永恒造型地址有知道的么?有点事想过去!
画漫画需要用三庭五眼吗
蘑菇街尽快会什么时候到货
海尔空调wifi手机不打就掉线
我们公司为了合理避税,注册了两个公司,一个
苏大体育研究生难考吗
长春德泰经贸有限公司怎么去啊,有知道地址的
中国古代灭了多少国家
do you have a great summer camp?英语完形填
巨细胞病毒抗体igg测定155.50是不是偏高了
剑网3当前版本什么附魔赚钱
为什么在镜子中的人脸部会看着特别奇怪,自己
骑慢车小作文100字
被人打轻伤去鉴定要几天出结果啊?结果出来的
推荐资讯
生物学---某夫妇先天生下来身体都很弱,通过
通过民间借贷的途径获取100万元资金,如年利率
光明眼镜NO.2在什么地方啊,我要过去处理事情
微信有电子狗功能么
苏州站到苏州新区金枫路木桥街25号怎么走最近
当建筑层高较低时,宜采用哪一种空调系统
中国人在什么时候知道地球是圆的
去医院点痣会留疤吗
一个走运的人阅读答案
幻想神域这游戏还有人玩吗?
Apple在央视频放广告,安的什么心?
软籽石榴怎么吃 软籽石榴可以榨汁吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?