如何在程序启动时独占屏幕,不能切换?(50分)

  • 主题发起人 主题发起人 小羽
  • 开始时间 开始时间

小羽

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在程序启动时独占屏幕,不能切换?像QQ的消息一样,始终在最前,用ALT+TAB也不能切换呢?
 
如何使Form位于所有窗体最前
  在设计程序界面时,有时要求某一窗体不能被任何其它窗体遮盖,即使它失去焦
点。对于应用程序主窗体来说,可以通过在物体属性栏(Object Inspector)
中设置窗体的FormStyle属性为fsStayOnTop来实现;但是对于多窗体应用程序(MDI)
中主窗体产生的子窗体而言,这一方法的效果是相对有限的,因为此法只能
使该子窗体位于本应用程序其它窗体的最前端,当Windows 95桌面上别的应用程序窗
体获得焦点后仍可以将其遮盖。如果您需要应用程序子窗体拥有绝对的位于
所有窗体最前的能力时,可以参照下法进行(假定由主窗体事件产生的子窗体为
Form2,对应的程序组名为Unit2):
  1.在Unit2中窗体类声明public段下定义一个处理过程:
  procedure AppBringtoTop(Sender:TObject);
  2.在Form2的oncreate事件中加入*句如下:
  procedure Tform2.FormCreate(Sender:TObject);
  begin

   Application.OnDeactivate :=AppBringtoTop;
//*
  end;

  3.编写AppBringtoTop过程程序如下:
  procedure TForm2.AppBringtoTop(Seader:TObject);
  begin

   SetactiveWindow(Handle);
//API函数,将本窗体提至最前
  end;

  ●说明:Application是Delphi对用户创建的应用程序的封装,为TApplication
类,如同TForm等一样,TApplication也有其自己的属性与事件定义,其中
Application.OnDeactivate事件在用户开启其他应用程序而将会使本应用程序为
Deactivate时产生,正确地对该事件编程即可实现本窗体(Form2)始终位于最前;
另外由于TApplication是不可见控件,同时它的属性与事件均没有列入物体属性栏
中,因而需要在程序段中编写代码来进行描述。编写TApplication的事件过程
时要按下述原则进行:A?在执行段implementation中编写好事件处理过程;B?在
interface段中声明该事件处理过程;C?在该窗体的FormCreate事件中定义所
需的Application事件响应为B中声明的过程名。
 
这是两个问题:第一个问题直接设置form的属性就行了,第二个问题可以通过onkeydowm
事件来处理判断按下的键,键值等于alt+tab时什么都不做,或什么其它的就看你自己了。
 
对不起,再问一下 ALT+TAB 和 WINDOWS 和 CTRL+ALT+ESC 和 CTRL+ALT+DEL 和 CTRL+SHIFT+ESC 键怎么表示呢 ?
 
对不起,再问一下,如果要独占屏幕怎么实现呢?
 
to yanh_98:tab键没有键值吧?
 
systemparametersinfo(97,1,nil,0);//屏蔽热键
systemparametersinfo(97,0,nil,0);//取消屏蔽
你可以试一下
 
楼上的调用在2000下是不能用的
------------------
http://www.8421.org
 
接受答案了.
 
后退
顶部