新年好!关于程序在OS启动时自动行的问题。。(100分)

A

arcore

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟遇到的问题有如下几个:
1、程序要在OS启动时自动运行;
2、要隐藏桌面和任务栏;
3、要屏蔽系统按键(主要是任务栏开始按钮的快捷键)。
关于第一个问题,大家都知道,只要在Run/RonOnce/RunSerice中任一个下加一项就行了。
关于第二个问题,用ShowWindow也可以实现;但是还出现一个问题:我的程序在开始运行
时隐藏了任务栏,但一会任务栏又出现了(估计是Explorer.exe运行的原因),所以我在我
的程序里的第一个Window里加一个Timer,定时的隐藏任务栏,也算基本上实现了吧。
关于第三个问题,我在DFW里查到资料也实现了。
三个问题都实现了,但还有一个与此相关的问题小弟找不到解决方法:小弟的程序在执行后
主FORM不是当前激活的FORM,不能接受键盘输入。不知道大家有没有常在网吧上网的经历,
用没有用过一些网吧管理软件。小弟记得有一个光大网吧管理软件,在网吧上网时,先到服
务哭刷卡,客户电脑启动后,光大网吧管理软件的客户端程序也执行,出现一个全屏的Form
,要求输入卡号。此时,桌面全在这个客户端程序之下,Form上的Edit框也一直有输入焦点
,等待输入。小弟要的就是要这样的效果,即:小弟的程序在自动运行后,要求第一个显示
的Form一直是当前激活的Form,一直有输入焦点。
希望小弟说得够清楚了,请大家帮帮忙。。。
 
有人要干坏事了!
 
//3、要屏蔽系统按键(主要是任务栏开始按钮的快捷键)。
Ctrl-Alt-Del也屏蔽了吗?2000/xp下好像很困难啊.你怎么做的
 
用 Timer,每隔一段时间就 ShowWindow(Self.Handle, SW_SHOW),
然后把窗体放到最前面。
或者干脆把鼠标锁上,用 ClipCursor 函数,不知道怎么做问我。(我以前就是这么干的)。
(我不敢肯定。)
 
==>梦菲斯:我要干什么坏事?
==>太阳火:我不要求屏蔽Ctrl + Alt + Del,只要不打开程序菜单就可以了。
==>zeus :谢了,我试试看。。
 
还有一点要补充一下:我的程序的第一个Form是全屏的,要求就是在不动键盘和鼠标的
情况下,始终是当前的活动窗口,有输入焦点,能接受键盘事件。
 
我记得 TForm 有一个 Focused 属性,还有 SetFocus 方法,因此你可以
在 Timer 的 OnTimer 事件中加入:
if not Self.Focused then Self.SetFocus;​
如果你只要监视键盘输入,那么不需要使用 TEdit,直接在 Form 的
OnKeyPress 事件中加入代码即可:首先声明一个模块级变量 [(在 VB 中是
这么叫),在 Unit 的 var 段中声明],然后每次 OnKeyPress 时,如果没有
输入回车,就把所输入的东西田家到那个字符串变量里,如果要输入几个字
符串,那么分几次输入就行了。(自己想)
 
To zeus :用TForm.SetFocus方法和ShowWindow函数都没有用的,我试过了。

请问还有没有其它的方法。
 
edit1.setfocus
 
此问题我已找到答案,解决方法如下:
===============================================
在Form上放一个Timer, 在OnTimer事件中加入:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetActiveWindow(Self.Handle); //设置当前窗口获得焦点
SetForegroundWindow(Self.Handle);
end;
 
多人接受答案了。
 
顶部