怎样隐藏任务栏标题?(100分)

  • 主题发起人 主题发起人 YuAo
  • 开始时间 开始时间
Y

YuAo

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位高手:在Delphi编程中怎样才能使应用程序图标在任务栏在消失,即按下
<Ctrl>+<Alt>+<Del>时出现的对话框中消失?
 
察看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=776946
 
首先声明
function RegisterServiceProcess(dwProcessID,dwType:Integer):Integer;stdcall;external 'KERNEL32.DLL';
再在窗口Create事件加上一句:
RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏
 
不显示在任务栏
方法1:
showwindow(application.handle,sw_hide);
方法2:
var Owner : HWnd;
begin
Owner:=GetWindow(Handle,GW_OWNER);
ShowWindow(Owner,SW_HIDE);
不显示在WINDOWS任务列表
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external 'KERNEL32.DLL';
RegisterServiceProcess(GetCurrentProcessID,1);
//恢复RegisterServiceProcess(GetCurrentProcessID,0);

 
YB_unique:
风中流云: 好象在 2K 中不行
 
tform1.formcreate加入application.showmainform:=false
在加入application.title:=''

function RegisterServiceProcess(dwProcessID,dwType:Integer):Integer;
stdcall;external 'KERNEL32.DLL';(这个函数在nt和2000下没有)
再在窗口Create事件加上一句:
RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏
 
在工程文件中:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
------------------------------------
Application.Title:='';
------------------------------------
Application.Run;
 
同意楼上,其他的在98可用,在2000中就不能用了。
其中的application.title:='';也可加在form的create事件中!
不过在进程中还是看的见!
 
但是你可以监控“任务管理器”功能,如果一出现就直接将其杀掉,你在win2k下按下三键
调不出“任务管理器”又有何用呢?换一个思路想想吧,这样是可行了。
在win98下可以用上面的方法做到。在win2k下,除非你注册成服务类型让其杀不掉,要不就
监控“任务管理器”,想完全的隐藏任乎是不行的。
 
下面的代码经过验证
1)隐藏应用程序图标
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Visible:=false;
Application.ShowMainForm:=Visible;
end;
2)隐藏和显示程序的标题栏
procedure TForm1.HideCaptionBar;
var
save:LongInt;
begin
if BorderStyle = bsNone then Exit;
Save := GetWindowLong(Handle,GWL_STYLE);
if (Save and WS_CAPTION) = WS_CAPTION then
begin
Case BorderStyle of
bsSingle,bsSizeable:
SetWindowLong(Handle,GWL_STYLE,Save and (not(WS_CAPTION)) or WS_BORDER);
bsDialog:
SetWindowLong(Handle,GWL_STYLE,Save and (not(WS_CAPTION)) or DS_MODALFRAME or WS_DLGFRAME);
end;
Height :=Height-GetSystemMetrics(SM_CYCAPTION);
Refresh;
end;
end;
procedure TForm1.ShowCaptionBar;
var
save:LongInt;
begin
if BorderStyle = bsNone then Exit;
Save := GetWindowLong(Handle,GWL_STYLE);
if (Save and WS_CAPTION) <> WS_CAPTION then
begin
Case BorderStyle of
bsSingle,bsSizeable:
SetWindowLong(Handle,GWL_STYLE,Save or WS_CAPTION or WS_BORDER);
bsDialog:
SetWindowLong(Handle,GWL_STYLE,Save or WS_CAPTION or DS_MODALFRAME or WS_DLGFRAME);
end;
Height :=Height+GetSystemMetrics(SM_CYCAPTION);
Refresh;
end;
end;
 

Similar threads

后退
顶部