请问怎么让窗口一启动就隐藏,在任务栏也不显示???
我用了showwindow和setwindowpos都只能使窗口隐藏,但怎样才能让它不显示在任务栏呢?还有就是要放在哪个地方才能一启动就隐藏?
请指教!!!多谢!!!!!!
我保证不是做害人的东西,只是想监视自己注册表的某些设置。
问题点数:50、回复次数:17Top
1 楼kaershaw(一苇渡江&&欲出江湖)回复于 2004-05-02 20:37:07 得分 0
做成系统服务就行了!Top
2 楼hsmserver(撒哈拉之雨的悲伤)回复于 2004-05-02 20:37:37 得分 0
在工程文件里定义
Application.Show:=Flase;Top
3 楼agenchen(啊柑)回复于 2004-05-02 20:59:16 得分 0
用application.show:=false好象不行,这个我试过,不过你可以这样
Form1.width:=0;
Form1.height:=0;
这样的话,就可以让程序不显示。
至于不让程序在任务栏显示,那就要将进程注册成一个服务,这个在网上有好多这样的代码!Top
4 楼agenchen(啊柑)回复于 2004-05-02 21:00:49 得分 0
还有这个代码应该在
form.creat里加入!!!!Top
5 楼dfsdf36(dfsdf36)回复于 2004-05-02 21:34:56 得分 0
把所有窗体设为available窗口
在project.unit里写
form1:=Tform1.create(Application);
form1.visible:=false;Top
6 楼SeaWave(NoSound)回复于 2004-05-02 23:07:29 得分 0
应该是在主窗体的OnCreate事件里写上:Application.ShowMainForm := False;Top
7 楼adamdary(燕七)回复于 2004-05-02 23:14:27 得分 0
SeaWave(NoSound) 的对Top
8 楼XAJacky(枫华(有时候很郁闷!))回复于 2004-06-11 00:33:27 得分 50
Delphi 7 中在工程文件里想这样定义即可
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm:=false;//就是这一条语句
Application.Run;Top
9 楼NewStarSE(看见就跑)回复于 2004-06-11 00:51:05 得分 0
既然不想显示窗口,就根本不用Delphi提供的Form,直接在工程文件中用API函数CreateWindow创建一个大小为0的窗口就行,连.pas和.dfm文件都没有,编译起来绝对小,像下面这个样子:Procedure CreateWindow;
Var
WC : TWndClass;
Begin
With WC do Begin
Style := 0;
lpfnWndProc := @WndProc;//自己写的窗口消息处理函数
cbClsExtra := 0;
cbWndExtra := 0;
hIcon := 0;
hCursor := 0;
hbrBackground := 0;
lpszMenuName := nil;
lpszClassName := 'MyTrayIconClass';
hInstance := System.MainInstance;
end;
RegisterClass(WC);
MainWindow := Windows.CreateWindow('MyTrayIconClass','MyVeryOwnTrayIconWindow',
ws_OverlappedWindow,0,0,0,0,0,0,hInstance,nil);
ShowWindow(MainWindow,sw_Hide);
UpdateWindow(MainWindow);
End;
Top
10 楼johnzhangbit(※嚎☆鬼※)回复于 2004-06-11 00:52:44 得分 0
楼上才是正确答案,不过要修改一下不然很可能会出现闪屏.
Delphi 7 中在工程文件里想这样定义即可
Application.Initialize;
Application.ShowMainForm:=false;//就是这一条语句,而且要放在这里!
Application.CreateForm(TForm1, Form1);
Application.Run;Top
11 楼alinsoft(艾林)回复于 2004-06-11 08:56:20 得分 0
学习INGTop
12 楼gabrielnystrom(小白)回复于 2004-06-11 09:34:33 得分 0
在implementation后添加声明:
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
再在上面的窗口Create事件加上一句:RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏
这样你的程序用ALT+DEL+CTRL都看不见
Top
13 楼gyf2000(中易)回复于 2004-06-27 15:23:35 得分 0
gabrielnystrom(小白)同志,加上你的两句会提示RegisterServiceProcess在'KERNEL32.DLL'中找不到呀。Top
14 楼juliens(星星球愛思纯^_^)回复于 2004-06-27 15:32:01 得分 0
ShowWindow(MainWindow,sw_Hide);Top
15 楼popmailzjw(什麼都不會)回复于 2004-08-17 08:52:51 得分 0
這個就是我要找的了Top
16 楼xixuemao(钱不是问题,问题是没钱)回复于 2004-08-17 09:21:39 得分 0
自己下一个消息。。
在消息里调用self.hide;
在Create里post这条消息
测试成功。。请参考Top
17 楼xixuemao(钱不是问题,问题是没钱)回复于 2004-08-17 09:22:24 得分 0
不好意思,是自己写一个消息
不是下一个。。汗~~Top




