如何在Windows中的禁止我的线程不被发现

whongshu 2000-06-30 10:53:00
我想在Windows中按下CTRL+ALT+DEL时的任务管理器中把我的线程去掉不知怎么实现?
...全文
224 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
solitudestar 2000-07-03
  • 打赏
  • 举报
回复
在Head File里加入如下代码:
typedef DWORD(__stdcall *PRegFunction)(DWORD,DWORD);
在private:里加入如下代码:
HINSTANCE hKernelLib;
PRegFunction RegisterServiceProcess;
在public:里加入如下代码:
__fastcall ~TForm1();
在其cpp文件里加入如下代码:
__fastcall TForm1::TForm1(TComponent *Owner)
:TForm(Owner)
{
hKernelLib=LoadLibrary("kernel32.dll");
if(hKernelLib){
RegisterServiceProcess=(PRegFunction)GetProcAddress(hKernelLib,"RegisterServiceProcess);
if(RegisterServiceProcess) RegisterServiceProcess(GetCurrentProcessId(),1);
}
}

__fastcall TForm1::~TForm1()
{
if(hKernelLib){
if(RegisterServiceProcess) RegisterServiceProcess(GetCurrentProcessId(),0);
FreeLibrary(hKernelLib);
}
}

上面的TForm1即为你程序的主窗体的名字.
whongshu 2000-07-01
  • 打赏
  • 举报
回复
我用的是2000,有没有别的办法。
先谢谢你,给你加分了
qbhua 2000-07-01
  • 打赏
  • 举报
回复
如果你用的是WIN98/95系统是应该可以的,
我试过。但如果你用的是NT/2000这样肯定不行。
whongshu 2000-07-01
  • 打赏
  • 举报
回复
没有成功
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
"RegisterServiceProcess");
返回NULL。
bzjbest 2000-06-30
  • 打赏
  • 举报
回复
用下面程序即可,从此不用再问.
在InitInstance()中加入:

typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);

HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer
DWORD dwParam1;
UINT uParam2, uReturnVal;

hDLL = LoadLibrary("KERNEL32");

if (hDLL != NULL)
{
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
"RegisterServiceProcess");
if (!lpfnDllFunc1)
{
// handle the error
FreeLibrary(hDLL);
return 0;
}
else
{
// call the function
uReturnVal = lpfnDllFunc1(GetCurrentProcessId(),1);
}
}

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧