高分!!怎样让进程不被杀死?比如有些进程在windows2000下就不能被任务管理器关闭,提示拒绝访问,如何实现? 服务类进程建立时有这面的选项(我在winNt4下试验过的)。再具体我也说不上更多,毕竟我也只懂皮毛,但我认为它不复杂。你查帮助看。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NT/2K 下的服务器程序跟普通的程序不同,它需要实现若干规定的函数然后在注册表中注册。不是简单的使用 RegisterServerProcess就可以。在Delphi的New Items窗口中选择Service 或者 Service Application 就可以建立一个服务器程序。另外你还可以把程序做成 MTS/COM+ ,然后启动。 不是这样的,有这样的进程,我见多的,你如果用任务管理器关闭它则会得到一个系统提示:访问拒绝。进程(exe文件)丝毫未动! 在Close事件中运行本程序就行啦!或Action:=caNone不过这个很不好的可以关! 好象强行关闭进程时windows是不会向应用程序发送关闭消息的,所以OnClose事件是不起作用。应该是向windows发送不能关闭的消息,但我不知道该如何做。 >>用任务管理器关闭它则会得到一个系统提示:访问拒绝。进程(exe文件)丝毫未动那些都是系统的关键进程。其它的都可以终止的。 你的进程如果是system级用户启来的话,就是不能杀死.我还有这方面的麻烦呢,我写的应用服务器,在客户端用普通用户就是不能启来,必须给其加上system权限才行(用dcomcnfg),这又带来服务器端又不能任意删除的问题 谁知道解决办法,告诉我一声,不胜感激!mail to:[email protected] 我见过第三方软件的进程,是不能被杀死的,看来它是system级的进程。怎样让自己的程序成为system级的进程呢?具体怎么做,举个例子好么? 试试下面这个方法:(摘自Kingron(WinAPI)的delphi猛料,别见怪。)介绍一个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) then showmessage('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);其实这个只是一个欺骗行为,不知道还有没有其他好办法。关注中! 谢谢!你的这个方法我早知道,但它只能用在9x/me中,在2000下是不行的,呵呵。不过很感谢你的热心回复,谢谢! 再提前一次,望各位老大帮忙啊!to ljhsoft(刘建华):用任务管理器结束程序时是不向程序发送退出消息的,因此你提的这个方法不行。 在VB 那边有一个非法终止的事件,在DELPHI这边有类似的吗?很关注我也需要!!! 在NT/2000里边,应该是做成Service application吧 各位兄弟,这件事情我又解决的办法,当初是在NT4下实现的,大家看者改一下就行了,源代码较长,我会将它打包,要的朋友留下E-Mail,我给你们发,不要钱的阿!!!或者qq联系:9147908 啊,那太好了,解决立马给你加分,我的mail:[email protected] 如果windows2000 连一个进程都杀不掉,windows2000 还叫 真正的抢占式的多任务。那样的话,windows2000还不如windwos 98稳定,你还会装2000吗?:-《 Win2000是够狠,但还是有东西比它还狠!软件是人编出来的!!对了,本人是学生,上网不方便,在网吧,发给你们包,可能会慢一些,请见谅,关于这个的实现方法,我记得有一个电子图书光盘中也有,大家可以用超星的浏览器,上图书馆查一下。 呵呵,我看看,[email protected] delphi中scrollbar的使用 如何在Delphi中輸入"叁"字?操作系統是繁體中文。急﹐在線等﹗ 错误: 找不到要更新的资料列最后读取的值已变更!!急!在线 savetofile函数的参数不能有空格吗? 请问如何吧C:\DOCUME~1\转换成完整路径? 到底如何通过编程发送手机短信?:( BDE 别名 redhat linux 7.2 安装问题 怎么读取其它程序窗口内的控件信息 数据库程序开发中的一个奇怪的现象??? 能否通过数字n直接来使当前记录指向表中的第n条记录? TMEMO类的问题请帮忙。
Service 或者 Service Application 就可以建立一个服务器程序。另外你还可以把程序做
成 MTS/COM+ ,然后启动。
应该是向windows发送不能关闭的消息,但我不知道该如何做。
mail to:[email protected]
介绍一个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) then
showmessage('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);其实这个只是一个欺骗行为,不知道还有没有其他好办法。关注中!
不过很感谢你的热心回复,谢谢!
to ljhsoft(刘建华):用任务管理器结束程序时是不向程序发送退出消息的,因此你提的这个方法不行。