.NET Compact Framework下的进程管理:
在.NET Compact Framework 的进程管理需要调用win32的API,也就是P/Invoke,在msnd上提供了这一P/Invoke的源代码, Creating a Microsoft .NET Compact Framework-based Process Manager Application,由于在技术交流群里有不同的人问同样的问题,因此打算写一下。
Win32 API
关键的API 如下:
privateconstintTH32CS_SNAPPROCESS=0x00000002;
[DllImport("toolhelp.dll")]
publicstaticexternIntPtrCreateToolhelp32Snapshot(uintflags,uintprocessid);
[DllImport("toolhelp.dll")]
publicstaticexternintCloseToolhelp32Snapshot(IntPtrhandle);
[DllImport("toolhelp.dll")]
publicstaticexternintProcess32First(IntPtrhandle,byte[]pe);
[DllImport("toolhelp.dll")]
publicstaticexternintProcess32Next(IntPtrhandle,byte[]pe);
[DllImport("coredll.dll")]
privatestaticexternIntPtrOpenProcess(intflags,boolfInherit,intPID);
privateconstintPROCESS_TERMINATE=1;
[DllImport("coredll.dll")]
privatestaticexternboolTerminateProcess(IntPtrhProcess,uintExitCode);
[DllImport("coredll.dll")]
privatestaticexternboolCloseHandle(IntPtrhandle);
privateconstintINVALID_HANDLE_VALUE=-1;
调用上面的API就能就能轮询出所有的进程,可以杀死指定进程了。
Structures
调用这些API需要下面的结构体 PROCESSENTRY32,结构体的转换是P/Invoke里面最难的部分,我曾经写过一篇这样的文章(.NET Compact Framework 下Win32 API P/Invoke 的使用),还是有很多需要学习和改进的地方,欢迎指教。
PROCESSENTRY32 implementation
#regionPROCESSENTRY32implementation
// typedefstructtagPROCESSENTRY32
// {
// DWORDdwSize;
// DWORDcntUsage;
// DWORDth32ProcessID;
// DWORDth32DefaultHeapID;
// DWORDth32ModuleID;
// DWORDcntThreads;
// DWORDth32ParentProcessID;
// LONGpcPriClassBase;
// DWORDdwFlags;
// TCHARszExeFile[MAX_PATH];
// DWORDth32MemoryBase;
// DWORDth32AccessKey;
// }PROCESSENTRY32;
privateclassPROCESSENTRY32
{
//constantsforstructuredefinition
privateconstintSizeOffset=0;
privateconstintUsageOffset=4;
privateconstintProcessIDOffset=8;
privateconstintDefaultHeapIDOffset=12;
privateconstintModuleIDOffset=16;
privateconstintThreadsOffset=20;
privateconstintParentProcessIDOffset=24;
privateconstintPriClassBaseOffset=28;
privateconstintdwFlagsOffset=32;
privateconstintExeFileOffset=36;
privateconstintMemoryBaseOffset=556;
privateconstintAccessKeyOffset=560;
相关视频
相关阅读 vs.netIDE报"以下文件中的行尾不一致,要将行尾标准化吗?"的解决ie6下面asp.net mvc3 部署应用程序.NET 3.5 安装错误的四个原因及解决方法支持无限制历史记录的Paint.NET 3.5.8 Final,你用了吗?.NET Framework环境安装错误怎么办?JVM和.NET CLR和哪个会被彻底击败在asp.net mvc中实现右键菜单和简单的分页教程VB.NET如何得到调用当前过程的方法名称和类名称
热门文章 没有查询到任何记录。
最新文章
什么是.NET中的TDD?ASP.NET AJAX入门简介
WebMatrix入门教程VC++2008中如何调用GetOpenFileName打开文件PlaySound函数在VC++6.0中如何播放音乐及声请问VC++回调函数怎么用
人气排行 嵌入式实时操作系统VxWorks入门教程ArrayList 与 string、string[] 的转换C#遍历整个文件夹及子目录的文件代码WebMatrix入门教程asp.net判断文件或文件夹是否存在c#判断数据NULL值的方法vc++6.0怎么写Windows简单窗口代码.net解决数据导出excel时的格式问题
查看所有0条评论>>