怎样使一个程序运行时没有可见的窗体?(100分)

  • 主题发起人 主题发起人 数字化强盗
  • 开始时间 开始时间

数字化强盗

Unregistered / Unconfirmed
GUEST, unregistred user!
一个程序只有一个窗体.用什么方法使它在运行时.不显示窗体,
也不在任务栏上出现呢?设置些什么东西呢.
 
用ShowWindow(form1.handle,SW_HIDE)就可以隐藏了
 
我不太懂啊.
这语句放在那啊?能详细一点吗. 我是刚学的.
 
把ShowWindow(form1.handle,SW_HIDE)放在工程文件里面,最好是写在
Application.Run之前,你去试一试看吧
 
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
ShowWindow(form1.handle,SW_HIDE);
Application.Run;
end.
是不是这样?
可一运行就出现下面的提示而不能通过.
Undeclared identifier:'showwindow'
Undeclared identifier:'SW_HIDE'
是为什么?
 
//主窗口初始化完毕并显示时将激活Paint重画事件,此时将主窗口隐藏
procedure TASDForm.FormPaint(Sender: TObject);
begin
Hide;
end;
 

uses
Forms,Windows,
 

我记得2000年《电脑报》上有类似问题,你可以查一下。
 
用showWindow(form1.handle,SW_HIDE)好像没用吧.
还有按住98下,按Ctrl+Alt+Del键,能够在关闭程序的对话框里面看到.有什么方法在这里
也是不可见的呢.(NT下.任务管理器里也能见的)
 
兄弟,给分吧:
1.在tform1.formcreate中加入application.showmainform:=false;
程序在开始运行时看不见窗口
2.application.title:='';由于程序无名称,在程序管理器中是看不
见的(win2000中),但win98下好像还是有一个空行
3.要让此程序运行时按下ctrl+del+alt 也看不见,可以:
在implementation后添加声明:
function RegisterServiceProcess(dwprocessid,dwtype:integer):integer;
stdcall; external 'kernel32.dll';
(win98下才行,winnt/2000的kernel32.dll中没有这个函数,如果你的
系统是nt/2000,可看第4条)
注意以上函数名的R,S,P必须大写
再在tform1.createform中调用 RegisterServiceProcess(getcurrentprocessid,1)
则此程序彻底隐藏,哪儿也没有,包括任务栏!!!
但是还是没法逃出process view进程检查器,delphi的winsight32和
windows自带的drwatson
4.win98和winnt下的通用隐藏程序:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Windows;

{$R *.RES}

var
ExtendedStyle : Integer;

begin
Application.Initialize;

//==============================================================
ExtendedStyle := GetWindowLong (Application.Handle, GWL_EXSTYLE);

SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle OR WS_EX_TOOLWINDOW
AND NOT WS_EX_APPWINDOW);
//===============================================================

Application.CreateForm(TForm1, Form1);
Application.Run;
end.
 
TO:fu_xiang_yu
第4个方法好像没用吧.
 
试试 ShowWindow(Application.handle,SW_HIDE);
 
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Windows;

{$R *.RES}


begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
//==============================================================
Application.showmainform:=false // for hide main windows
//===============================================================
Application.Run;
end.

unit1 ;

......

function RegisterServiceProcess(dwprocessid,dwtype:integer):integer;
stdcall; external 'kernel32.dll';

form1.onCreate(sender:Tobject);
begin
RegisterServiceProcess(0,1);
end;
.....
 
多人接受答案了。
 
后退
顶部