在win2000下,怎么让程序不出现在程序列表中啊? 在win2000下,怎么让程序不出现在程序列表中啊?就是Ctrl+Del+Alt时,看不到这个进程。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以把程序做成服务进程,包含在Service里,就看不到了 果你不想自己的程序被从Ctrl+Alt+Del弹出的窗口中强行关闭,介绍一个Windows未公布的API函数给你:RegisterServiceProcess(ProcessID:Long,Type:Long)该函数存在于Kernel32.dll中.Process指向进程的ID,Type表示是否向系统注册该进程,是1,否0./////////////////////////////////////////////////////////////////////////////function RegisterServiceProcess(a:longint;const b:longint):dword;stdcall;far;external 'Kernel32.dll' name 'RegisterServiceProcess';ddd:=GetCurrentProcessId;if (RegisterServiceProcess(ddd,1)=0) thenshowmessage('error!');////////////////////////////////////////////////////////////////////////////用未公开函数RegisterServiceProcess#define RSP_SIMPLE_SERVICE 1#define RSP_UNREGISTER_SERVICE 0//下面代码为隐藏DWORD dwID,redserv;dwID = GetCurrentProcessId();regserv = RegisterServiceProcess(pid,RSP_SIMPLE_SERVICE);//恢复隐藏dwID= GetCurrentProcessId()regserv = RegisterServiceProcess(pid,RSP_UNREGISTER_SERVICE); 后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管理员可以通过热键调出隐藏的运行界面。要作到这些,必须把当前进程变为一个系统服务,并且定义全局热键。 一、把当前进程变为一个系统服务: 目的是在任务列表中把程序隐藏起来。调用API函数RegisterServiceProcess实现。 二、定义全局热键(本例中定义热键Ctrl+Del+R),步骤: 1、定义捕获Windows消息WM_HOTKEY的钩子函数,即:procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; 2、向Windows加入一个全局原子 Myhotkey: GlobalAddAtom(’MyHotkey’), 并保留其句柄。 3、向Windows登记热键:调用API函数RegisterHotKey实现。 三、源程序: unit Unit1; interface uses Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private {热键标识ID} id: Integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; { Privat-Declarations} public { Public-Declarations} end; var Form1 : TForm1; implementation const RSP_SIMPLE_SERVICE=1; function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’KERNEL32.DLL’; {$R *.DFM} {捕获热键消息} procedure TForm1.WMHotKey (var Msg : TWMHotKey); begin if msg.HotKey = id then ShowMessage(’Ctrl+Alt+R键被按下!’); form1.Visible :=true; end; procedure TForm1.FormCreate(Sender: TObject); Const {ALT、CTRL和R键的虚拟键值} MOD_ALT = 1; MOD_CONTROL = 2; VK_R = 82; begin {首先判断程序是否已经运行} if GlobalFindAtom(’MyHotkey’) = 0 then begin {注册全局热键Ctrl + Alt + R} id:=GlobalAddAtom(’MyHotkey’); RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,VK_R); end else halt; end; {把当前进程变为一个系统服务,从而在任务列表中把程序隐藏起来} procedure TForm1.Button1Click(Sender: TObject); begin RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE); form1.Hide; end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; {退出时释放全局热键} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin UnRegisterHotKey(handle,id); GlobalDeleteAtom(id); end; end. 四、说明: 在后台监控软件中使用以上功能,可真正实现隐蔽运行,热键调出,便于管理员进行管理。程序在Win98,Delphi5.0中运行通过。 一段看不明白道理的热键设置代码 用存储过程写一个自动编号生成器 delphi如何控制登陆失败的次数 调用函数缺变量,怎么解决啊?高手们帮帮忙,谢谢! ListBox Treeview 怎么用代码增加 根节点(Treeview[0]) 对象、类、控件之间的区别? datetime如何只取后面的time? 如何做字符串替换 一套完善的医院检验科管理系统(DELPHI 源码)。 用ado怎样使用Sql语句来删除表中的行 Plug_in技术方面的问题(在线)
interface
uses
Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{热键标识ID}
id: Integer;
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
{ Privat-Declarations}
public
{ Public-Declarations}
end;
var
Form1 : TForm1;
implementation
const RSP_SIMPLE_SERVICE=1;
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’KERNEL32.DLL’;
{$R *.DFM} {捕获热键消息}
procedure TForm1.WMHotKey (var Msg : TWMHotKey);
begin
if msg.HotKey = id then
ShowMessage(’Ctrl+Alt+R键被按下!’);
form1.Visible :=true;
end; procedure TForm1.FormCreate(Sender: TObject);
Const
{ALT、CTRL和R键的虚拟键值}
MOD_ALT = 1;
MOD_CONTROL = 2;
VK_R = 82;
begin
{首先判断程序是否已经运行}
if GlobalFindAtom(’MyHotkey’) = 0 then
begin
{注册全局热键Ctrl + Alt + R}
id:=GlobalAddAtom(’MyHotkey’);
RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,VK_R);
end
else
halt;
end;
{把当前进程变为一个系统服务,从而在任务列表中把程序隐藏起来}
procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE);
form1.Hide;
end; procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
{退出时释放全局热键}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle,id);
GlobalDeleteAtom(id);
end;
end.
四、说明: 在后台监控软件中使用以上功能,可真正实现隐蔽运行,热键调出,便于管理员进行管理。程序在Win98,Delphi5.0中运行通过。