wince下的进程相关操作
来源:互联网 发布:盛势网络剧百度云资源 编辑:程序博客网 时间:2024/05/24 00:48
作者:小马
今天移植一个函数到wince下,函数的功能不复杂,就是遍历系统中所有的进程,直到找到要找到的进程并把它结束掉. 就是移植这样一个简单的函数,却遇到了很多问题. 当然移植成功后也学到了.
原来的程序是在vc写的,VC下实现上述功能用的是psapi.dll里EnumProcesses等一系列的函数, 枚举系统中所有的进程,找到要找结束的那个进程,并调用TerminateProcess结束它. 在移植过程中我发现. Wince并不支持psapi.dll,当然它里面的一些接口函数也肯定不能用. 网上查了一下,发现toolHelp.lib下有几个函数可以实现上述功能,最主要的是它们能在wince下使用. 这几个函数是
HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID)
BOOL WINAPI Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe)
BOOL WINAPI Process32Next(HANDLE hSnapshot, LPPROCESSENTRY32 lppe)
原理就是第一个函数获取当前进程的快照句柄, 然后用后两个函数遍历, 找到相应的进程并结束它. 具体每个函数的用法大家可以查msdn. 我在这里只说这遇到问题.
首先就是toolhelp.lib找不到. 通过查msdn我看到上面三个函数是要toolhelp.lib库支持的. 于是我就在evc-project-link-object/modules下面加上了toolhelp.lib这个库但是在EVC编译出错:
cannot open input file 'toolhelp.lib'
我估计是装SDK时没有把这个文件装上去,去SDK的安装目录看了一下,果然在lib文件夹下没有找到这个文件. 肯定是定制系统内核时没有把相应的组件加上. 去wince的帮助文档查了一下,了解到toolhelp.lib的支持应该加上toolhelp组件. 打开PB,找到了这个组件. 如下图所示.
加上这个组件,重新编译一个内核, 然后生成一个新的SDK, 以上问题解决. 下面把关键代码贴出来:
HANDLE hProcessSnap;
PROCESSENTRY32 pro32;
pro32.dwSize = sizeof(PROCESSENTRY32);//dwSize must be set before calling process32First.
hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
MessageBox(TEXT("snapShot process failed!"));
return;
}
BOOL bNext = ::Process32First(hProcessSnap, &pro32);
while (bNext)
{
if ( wcscmp(pro32.szExeFile, TEXT("myProcess.exe")) == 0 )
{
break;
}
bNext = ::Process32Next(hProcessSnap, &pro32);
}
if (bNext)//找到该进程
{
HANDLE hProcess = ::OpenProcess(0, FALSE, pro32.th32ProcessID);
if (hProcess == NULL)
{
MessageBox(TEXT("获取进程失败"));
return;
}
DWORD exitCode;
if (::GetExitCodeProcess(hProcess, &exitCode) != 0)
{
::TerminateProcess(hProcess, exitCode);//结束进程.
}
}
::CloseToolhelp32Snapshot(hProcessSnap);
- wince下的进程相关操作
- Wince 下对 进程的操作
- 进程的相关操作
- WinCE下的注册表操作
- java windows 下对进程的相关的操作
- linux下查找进程及终止进程操作的相关命令
- linux下查找进程及终止进程操作的相关命令
- linux下查找进程及终止进程操作的相关命令
- WinCE下的GPS设备操作
- Wince下的GPS设备操作
- WinCE下对数据库的操作
- WinCE下的GPS设备操作
- WINCE下对文件夹的操作
- WINCE下对文件夹的操作
- WINCE下对文件夹的操作
- wince下INI的操作更新
- WINCE下对文件夹的操作
- WinCE下对文件夹的操作
- Python Cookbook Notes Chapter1
- platform设备驱动之LED(misc设备)
- 蛋疼的触摸屏调试经历
- mac下的免费UML建模工具
- HashMap
- wince下的进程相关操作
- iPhone开发--之 异常
- INF ClassInstall32 Section详解
- (2)stm32开发之使用Keil MDK以及标准外设库创建STM32工程
- 判断单链表是否有环,如果有找出环的入口位置=>求两个相交链表的交点
- Problem H
- vc 禁用无线网卡 禁用网卡 禁用有线网卡
- RedHat配置FTP服务器 .
- 子数组的最大乘积