- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
获取系统进程 BOOL WINAPI EnumProcesses( __out DWORD* pProcessIds, // 用于接收进程标示符列表的数组 __in DWORD cb, // 数组pProcessIds的大小,单位是字节 __out DWORD* pBytesReturned// 数组pProcessIds中返回数据的大小,单位是字节 );? 如果函数执行成功,则返回一个非0值;否则返回0。 终止当前进程 终止当前进程也就是进程如何中止自己的运行。方法有两个: 主线程的入口函数返回:返回时,启动函数调用exit,并将用户的返回值传给它。exit销毁所有全局的和静态的对象,然后调用ExitProcess促使os终止应用程序。 程序也可以显式调用ExitProcess,但这样做无法销毁全局的和静态的对象。 VOID ExitProcess( UINT uExitCode ); 捕获进程(已结束)退出的代码 BOOL GetExitCodeProcess( HANDLE hProcess, LPDWORD lpExitCode ); hProcess [in] Handle to the process. lpExitCode [out] Pointer to a 32-bit variable to receive the process termination status. 捕获进程(已结束)退出的代码 lpExitCode用于装载进程退出代码的一个长整数变量。如进程尚未中止,则取得常数STILL_ACTIVE 退出代码也称为进程的返回值,该值存储与进程内核对象中。 终止其他进程 BOOL TerminateProcess ( HANDLE hProcess, DWORD uExitCode ); hProcess:指定被终止的进程的句柄 uExitCode:指定目标进程的退出代码,也可以使用GetExitCodeProcess取得一个进程的退出代码 取得进程句柄的两种方法: CreateProcess会返回进程句柄 对于一个已存在的进程,首先得到其进程ID,然后使用OpenProcess取得这个进程的访问权限 终止其他进程 HANDLE OpenProcess( DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId ); dwDesiredAccess :想得到的访问权限,PROCESS_ALL_ACCESS 所有权限 bInheritHandle:指定返回的句柄是否可被继承 dwProcessId :指定要打开的进程ID 返回进程的句柄 终止其他进程 OpenProcess执行失败后将返回NULL,这时可进一步调用GetLastError取得错误代码 VC的Tool/Error Lookup能够察看错误代码的详细说明 终止其他进程 示例代码 #include stdafx.h #include windows.h BOOL TerminateProcessFromId(DWORD dwId) { BOOL bRet = FALSE; // 打开目标进程,取得进程句柄 HANDLE hProcess = ::OpenProcess (PROCESS_ALL_ACCESS, FALSE, dwId); //PROCESS_ALL_ACCESS:所有权限,包括创建、读、写等。 //OpenProcess如果成功,则该进程内核对象引用计数+1 if(hProcess != NULL) { bRet = ::TerminateProcess(hProcess, 0); CloseHandle(hProcess);//结束了进程,还要使该进程内核对象引用计数-1 } return bRet; } int main(int argc, char* argv[]) { DWORD dwId; printf( 请输入您要终止的进程的ID号: \n); scanf(%u, dwId); if(TerminateProcessFromId(dwId)) { printf( 终止进程成功! \n); } else { printf( 终止进程失败! \n); } return 0; } 保护进程 保护进程是指保护进程不被其他进程非法关闭。这可以从两方面下手: 防止此进程被其他进程检测到 防止此进程被其他进程终止 采用的方法:Hook方法,见后面章节。 2.3 进程通信 通过自
文档评论(0)