模拟windows任务管理器列举系统进程,并关闭进程......

其实对于 windows进程的操作很简单,只要理解了 进程线程的概念 对于 进程的操作 那么就只是 几个函数的 问题了  。

下面是 对于进程操作要用到的几个函数 。

进程的概念:我们运行了一个程序,那个这个独立的程序就是一个进程。进程有自己的私有地址空间,进程中的线程共享这些私有地址空间 。

在一个进程中多个线程共同完成一项功能,可以提高工作的效率。 

HANDLE WINAPI CreateToolhelp32Snapshot(     //这个函数创建一个系统进程列表的快照 并返快照的句柄 用于操作  

  DWORD
dwFlags,      
  DWORD
th32ProcessID 
);

BOOL WINAPI Process32First(   //根据进程快照句柄检索快照列表中 第一个进程
  HANDLE
hSnapshot,     

  LPPROCESSENTRY32
lppe 
);

BOOL WINAPI Process32Next(   //根据进程快照句柄 循环检索进程信息 。。
  HANDLE
hSnapshot,     

  LPPROCESSENTRY32
lppe 
);

HANDLE OpenProcess(                                     //给定一个进程ID 我们可以打开并且获取句柄  用于 ReadProcessMemory  WriteProcessMemory 等等的线程插入使用
  DWORD
dwDesiredAccess
// access flag
  BOOL bInheritHandle,   
// handle inheritance option
  DWORD dwProcessId       // process identifier
);

BOOL TerminateProcess(                              //根据指定进程句柄关闭进程
  HANDLE
hProcess,
// handle to the process 
  UINT uExitCode // exit code for the process

);

typedef struct tagPROCESSENTRY32 {    //进程信息结构体  用于接收进程的各种信息
  DWORD dwSize;
  DWORD cntUsage;
  DWORD th32ProcessID;
  ULONG_PTR th32DefaultHeapID;
  DWORD th32ModuleID;
  DWORD cntThreads;
  DWORD th32ParentProcessID;
  LONG  pcPriClassBase;
  DWORD dwFlags;
  TCHAR szExeFile[MAX_PATH];
} PROCESSENTRY32;
typedef PROCESSENTRY32 *PPROCESSENTRY32;

 

BOOL ExitWindowsEx(
  UINT
uFlags,     // shutdown operation
  DWORD dwReason   // shutdown reason
);

第一个参数的取值

Value Meaning
EWX_LOGOFF 注销
EWX_POWEROFF
断电.

EWX_REBOOT
重启.

EWX_SHUTDOWN

休眠

下面是一段例子代码   在SDI下测试运行   在视图类中定义一个 CListCtrl类的对象c 

然后定义一个 进程信息类

class ProcessInfo
{
public:
 ProcessInfo(){index=0 ;}
 int index ;
 DWORD hArray[100] ;
};

这些都放在视图的操作中 ,如果这些做完了 那么就相应copy下面的代码

 

 

void CMyView::OnInitialUpdate()   //视图初始化..... 
{
 CView::OnInitialUpdate();
 GetDocument()->SetTitle("系统进程查看器--MadeBy小卫") ;
   InitProcessist() ;

}

void CMyView::OnKiilprocess()   //查杀进程 
{
   POSITION ps=c.GetFirstSelectedItemPosition();
   if (ps==NULL)
   {
    exit(0) ;
   }
  int item=c.GetNextSelectedItem(ps) ;
  HANDLE pt=OpenProcess(PROCESS_ALL_ACCESS,FALSE,f.hArray[item]) ;  //打开进程
  TerminateProcess(pt,0) ;  //查杀进程
  InitProcessist();//初始化列表

}

void CMyView::InitProcessist()
{
 int index=0 ;
 CString in ; 
 
 if(c.m_hWnd==NULL)
 {
 c.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_SINGLESEL ,CRect(0,0,600,500), this, 1);
 c.InsertColumn(0,"进程地址",LVCFMT_LEFT,350) ;
 c.InsertColumn(0,"进程ID",LVCFMT_LEFT,250) ;
 c.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE)  ;
 }
 else
 {
  c.DeleteAllItems() ;
  ZeroMemory(&f,sizeof(f)) ;
 }
 HANDLE sh=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)  ;//返回包含进程列表的 
 PROCESSENTRY32 pinfo; //进程信息结构体
 BOOL check=Process32First(sh,&pinfo) ; //检索进程快照列表中的第一个 进程
 if (check)
 {  
  in.Format("%d",pinfo.th32ParentProcessID) ; //格式换文本
  c.InsertItem(index,in) ;
  c.SetItemText(index,1,pinfo.szExeFile) ;  //设置子项文本
  f.hArray[f.index]=pinfo.th32ProcessID  ;//保存进程ID
  f.index++;
  index++ ;
 }
 
 
 while(Process32Next(sh,&pinfo))   //如果快照列表存在 那么继续搜索
 {
  in.Format("%d",pinfo.th32ParentProcessID) ;
  c.InsertItem(index,in) ;
  c.SetItemText(index,1,pinfo.szExeFile) ;
  f.hArray[f.index]=pinfo.th32ProcessID  ;//保存进程ID
  f.index++;
  index++ ; 
 }
}

 

 

 

 

 

 

时间: 2024-09-17 21:23:30

模拟windows任务管理器列举系统进程,并关闭进程......的相关文章

关闭任务管理器杀不了的进程

进程 Windows XP/2000的任务管理器是一个非常有用的工具,能让你看到系统中正在运行哪些程序(进程),只要你平时多看任务管理器中的进程列表,熟悉系统的基本进程,就可以随时发现可疑进程,这对防范木马和病毒大有裨益! 一.哪些系统进程不能关掉Windows运行的时候,会启动多个进程.只要你按下"Ctrl+Alt+Del"键打开任务管理器,点击"查看"/选择列,勾选"PIO(进程标识符)",然后单击"进程"标签,即可看到这

批处理 蓝屏 windows-求一个批处理文件使Windows蓝屏,不要关闭winlogon进程的

问题描述 求一个批处理文件使Windows蓝屏,不要关闭winlogon进程的 导师要求多用几种方式造成Windows蓝屏,用于测试.我只会写ntsd -c q -pn winlogon.exe, 再求一个可以造成Windows蓝屏的批处理代码. 在运行里输入cmd /c for /f %I in ('wmic process get Name')do (wmic process where Name="%I" delete),关闭所有进程,可以快速蓝屏,但是一旦写入批处理就不行了.

关于Windows任务管理器 5个不错的替代选择

任务管理器可以帮助你查看系统进程,但不是你可以使用的唯一一个工具.下面名单中的应用可能更适合你. Windows任务管理器一直是一个非常方便的资源,可以用于监控运行中的进程,用于终止不能通过正常手段关闭的应用.不过,和Windows任务管理器一样,有很多其他应用可以替代任务管理器,提供多样的.与任务管理器相关的服务.本文将罗列这样5个应用. 1.Security Task Manager Security Task Manager(如图A)可能是这个名单中最不寻常的工具.与其任务管理器一样,这款

win7系统任务管理器alg.exe是什么进程?

  win7系统任务管理器alg.exe是什么进程?           一.alg.exe进程能关闭吗? alg.exe进程文件内存使用约4000KB左右.在 Windows XP中,该进程文件位于C:Windowssystem32系统目录之下,这个程序对你系统的正常运行非常重要的,最好不要结束此进程.如果此文件出现在C:windowsalg.exe系统目录下,则可能是病毒. 请先根据下方的操作步骤分析,查明alg在你的电脑运行上是不是病毒,如果是病毒的话,你是无法关闭的,并且建议你尽快通过以

用Windows自带的工具结束进程

怎么才能关掉一个用任务管理器关不了的进程?我前段时间发现我的机子里多了一个进程,只要开机就在,我用任务管理器却怎么关也关不了 杀进程很容易,随便找个工具都行.比如IceSword.关键是找到这个进程的启动方式,不然下次重启它又出来了.顺便教大家一招狠的.其实用Windows自带的工具就能杀大部分进程: c:\>ntsd -c q -p PID 只有System.SMSS.EXE和CSRSS.EXE不能杀.前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它.ntsd从2000开始就

win7系统任务管理器imeutil.exe是什么进程?

  win7系统任务管理器imeutil.exe是什么进程?            解决办法如下: 1.安装搜狗的有一个版本是有问题的BUG,搜狗已经发布了,更新到最新版本即可. 2.搜狗输入法被破坏导致文件运行异常. 重新安装之前,建议先把旧的搜狗程序卸载. 3.卸载搜狗 4.打开 开始--运行---输入appwiz.cpl; 5.找到搜狗输入法之后,右键有"卸载删除"; 6.其他注意事项,卸载之后,安装最新版本的搜狗之后.打开运行输入services.msc 打开服务控制台; 7.

Windows任务管理器打开时间长该怎么办

  通过Windows任务管理器能够查看到系统进程和应用程序等方面信息,而任务管理器有多种打开方式,比较常用的就是在任务栏上右键点击"启用任务管理器"选项,也可以使用"ctrl+alt+esc"组合键来打开.但有部分用户反映在打开任务管理器过程中需要将长的时间,甚至有时候都打不开,出现这种现象很有可能是本地组策略配置删除"任务管理器"了,我们可以按照以下方式来取消. 解决方法/步骤: 1.使用"WIN+R"组合键或单击&quo

在win7系统中关闭进程后显示“程序无响应”怎么办?

  很多时候,咱们都需要在win7系统下载官网的任务管理器窗口中去关闭一些进程,这样不仅方便,可以一次性进行多个进程结束的操作,同时,对于一些无法关闭的窗口,咱们在任务管理器中也是可以轻松关闭的.但是这种轻松关闭对于win7系统来说却并非是每次都凑效的,有些时候,咱们在win7系统的任务管理器窗口中结束进程也会发现程序无响应的情况,那么出现这样的问题,咱们如何处理呢? 1.首先,咱们同时按下win7系统键盘上的win+r快捷键打开电脑的运行窗口,之后,咱们在窗口中输入cmd并单击回车,这样咱们就

java-Java编写Windows任务管理器

问题描述 Java编写Windows任务管理器 用Java编写一个类似Windows任务管理器的程序,要求简单(初学者老师要求不大) 解决方案 java对进程的管理只限于java程序自己创建的进程,对windows的进程很难实现管理java如果可以管理windows的进程那就碉堡了!!! 但也不是完全不能实现对windows的控制 其中最简单的做法就是同DOS命令形式对windows进行管理 你可以去看看java的Process类 它可以实现运行dos命令这样就可也实现windows任务管理了