.NET Compact Framework下的进程管理

.NET Compact Framework下的进程管理

2010/2/14 18:46:00来源:本站整理作者:我要评论(0)

.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;

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 囧
      囧
  • 0 恶心
      恶心
  • 0 期待
      期待
  • 0
      难过
  • 0 不错
      不错
  • 0 关注
      关注
  • 最新评论
  • 热门评论
共有评论(0)条 查看全部评论
高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲

注:您的评论需要经过审核才会显示出来