posts - 62,  comments - 19,  trackbacks - 0
[问题]
通常我们按下CTRL+ATL+DEL组合键后,可以看到正在运行的程序或者进程,有没有办法让程序从CTRL+ATL+DEL消失掉呢?也就是说让正在运行的程序对CTRL+ATL+DEL不可见。
[解答]
答案是肯定的,办法如下:
使用Win32 API 函数RegisterServiceProcess,但是这个API函数的文档你是很难找到的。这里我们要用一下汇编。

#include <windows.h>

HINSTANCE hLibrary;
void *regproc;

void CADInit(void);
void HideApp(void);
void ShowApp(void);
void CADClean(void);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  CADInit(); //加载 DLL 并创建一指向它指针
  HideApp(); //隐藏程序
  //ShowApp(); //显示程序

  //其他处理或调用
  
  CADClean(); //卸载 DLL
  return 0; //retrun 0 因为没有进入消息循环
}

void CADInit(void)
{
  //加载 kernel32.dll
  hLibrary = LoadLibrary("kernel32.dll");
  //获取函数RegisterServiceProcess的地址
  regproc = GetProcAddress(hLibrary, "RegisterServiceProcess");
}

void HideApp(void)
{
  //实现程序的隐藏
  __asm
  {
   push 1
   push 0
   call regproc
  }
  return;
}

void ShowApp(void)
{
  //恢复状态
  __asm
  {
      push 0
      push 0
      call regproc
  }
  return;
}

void CADClean(void)
{
  //卸载 DLL
  FreeLibrary(hLibrary);
  return;
}
本程序在W2K和Win9x测试通过。
posted on 2007-04-09 14:51 乔栋 阅读(743) 评论(0)  编辑 收藏 引用 所属分类: C++的健身房

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜


My blog is worth $0.00.
How much is your blog worth?