Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579649
  • 博文数量: 190
  • 博客积分: 10937
  • 博客等级: 上将
  • 技术积分: 2205
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-07 11:28
文章分类

全部博文(190)

文章存档

2012年(1)

2011年(27)

2010年(20)

2009年(142)

我的朋友

分类: C/C++

2009-09-07 11:43:43

#include
#include
#include

BOOL SelfDelete()
{
 TCHAR szModule [MAX_PATH], szComspec[MAX_PATH], szParams[MAX_PATH];
 GetModuleFileName(0,szModule,MAX_PATH);
 GetShortPathName(szModule,szModule,MAX_PATH);
 GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH);
 strcpy(szParams," /c  del ");strcat(szParams, szModule);strcat(szParams, " > nul");
 //strcat(szComspec, szParams); 
 SHELLEXECUTEINFO ExeInfo;
 ZeroMemory(&ExeInfo,sizeof(ExeInfo));
 ExeInfo.cbSize = sizeof(ExeInfo);
 ExeInfo.hwnd = 0;
 ExeInfo.lpVerb = "Open";   //执行动作,打开
 ExeInfo.lpFile = szComspec;   //执行文件全路径名称
 ExeInfo.lpParameters = szParams; //执行参数
 ExeInfo.nShow = SW_HIDE;    //执行方式,隐藏窗口。
 ExeInfo.fMask = SEE_MASK_NOCLOSEPROCESS; //设置为ShellExecute函数结束后进程退出
 if (!ShellExecuteEx(&ExeInfo)) return FALSE;
 //设置命令行进程级别为空闲基本,这使得本程序有足够的时间退出。
 SetPriorityClass(ExeInfo.hProcess,IDLE_PRIORITY_CLASS);
 //设置本程序进程基本为实时执行,快速退出。
 SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
 SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
 //通知资源管理器,本程序删除
 SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,szModule,NULL);
 return TRUE;
}
 

阅读(1060) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~