C#练习Array.Sort函数列出所有的进程与模块

简介:     using System; using System.Collections.Generic; using System.Text; using System.

 

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Collections;

namespace ICompare测试
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] allprocess = Process.GetProcesses();//所有运行的进程
            SortByProcessName cmpproname=new SortByProcessName();
            SortByModuleName cmpmodulename=new SortByModuleName();
            Array.Sort(allprocess, cmpproname);
            foreach (Process p in allprocess)
            {
                Console.WriteLine("{0}", p.ProcessName);
                try
                {
                    
                    ProcessModuleCollection allmodules = p.Modules;//进程下的所有模块
                    ProcessModule[] modules = new ProcessModule[allmodules.Count];
                    int i = 0;
                    foreach (ProcessModule m in allmodules)
                    {
                        modules.SetValue(m, i++);
                    }
                    Array.Sort(modules, cmpmodulename);
                    foreach (ProcessModule m in modules)
                    {
                        try
                        {
                            Console.WriteLine("  {0}", m.ModuleName);
                        }
                        catch { continue; }
                    }
                }
                catch
                { }
               
            }
        }
    }
    public class SortByProcessName : IComparer//Array.Sort()要用到的参数
    {
        public int Compare(object x, object y)
        {
            Process a = (Process)x;
            Process b = (Process)y;
            return a.ProcessName.CompareTo(b.ProcessName);
        }
    }
    public class SortByModuleName : IComparer
    {

        public int Compare(object x, object y)
        {
            ProcessModule a = (ProcessModule)x;
            ProcessModule b = (ProcessModule)y;
            return a.ModuleName.CompareTo(b.ModuleName);
        }
    }
}

 

结果:

  MSIMG32.dll
  msvcrt.dll
  MSVFW32.dll
  MSWSOCK.dll
  ncrypt.dll
  NETAPI32.dll
  netutils.dll
  npmproxy.dll
  NSI.dll
  ntdll.dll
  ntmarta.dll
  ole32.dll
  OLEAUT32.dll
  POWRPROF.dll
  profapi.dll
  propsys.dll
  PSAPI.DLL
  RICHED20.DLL
  RPCRT4.dll
  RpcRtRemote.dll
  rsaenh.dll
  safemon.dll
  SAMCLI.DLL
  sechost.dll
  Secur32.dll
  SensApi.dll
  SETUPAPI.dll
  SHELL32.dll
  SHLWAPI.dll
  slc.dll
  srvcli.dll
  SspiCli.dll
  TeamViewer.exe
  TeamViewer_Resource_zhCN.dll
  TeamViewer_StaticRes.dll
  tv_w32.dll
  urlmon.dll
  USER32.dll
  USERENV.dll
  USP10.dll
  uxtheme.dll
  VERSION.dll
  wdmaud.drv
  webio.dll
  winhttp.dll
  WININET.dll
  WINMM.dll
  WINNSI.DLL
  winsta.dll
  WINTRUST.dll
  wkscli.dll
  WLDAP32.dll
  WS2_32.dll
  wshtcpip.dll
  WTSAPI32.dll
TeamViewer_Service
  ADVAPI32.dll
  apphelp.dll
  bcrypt.dll
  bcryptprimitives.dll
  browcli.dll
  CFGMGR32.dll
  CLBCatQ.DLL
  comctl32.dll
  CRYPT32.dll
  CRYPTBASE.dll
  CRYPTSP.dll
  cscapi.dll
  d3d8thk.dll
  d3d9.dll
  davclnt.dll
  DAVHLPR.dll
  DEVOBJ.dll
  dhcpcsvc.DLL
  DNSAPI.dll
  drprov.dll
  dwmapi.dll
  fastprox.dll
  fwpuclnt.dll
  GDI32.dll
  gdiplus.dll
  GPAPI.dll
  iertutil.dll
  imagehlp.dll
  IMM32.DLL
  IPHLPAPI.DLL
  kernel32.dll
  KERNELBASE.dll
  LPK.dll
  Magnification.dll
  MPR.dll
  MSASN1.dll
  MSCTF.dll
  msvcrt.dll
  MSWSOCK.dll
  napinsp.dll
  ncrypt.dll
  Netapi32.dll
  netprofm.dll
  netutils.dll
  NLAapi.dll
  Normaliz.dll
  npmproxy.dll
  NSI.dll
  ntdll.dll
  NTDSAPI.dll
  ntlanman.dll
  ntmarta.dll
  ole32.dll
  OLEAUT32.dll
  pnrpnsp.dll
  profapi.dll
  propsys.dll
  Psapi.dll
  rasadhlp.dll
  RASAPI32.dll
  rasman.dll
  RPCRT4.dll
  RpcRtRemote.dll
  rsaenh.dll
  rtutils.dll
  sechost.dll
  Secur32.dll
  SensApi.dll
  SETUPAPI.dll
  SHELL32.dll
  SHLWAPI.dll
  srvcli.dll
  SspiCli.dll
  SXS.DLL
  TeamViewer_Service.exe
  urlmon.dll
  USER32.dll
  USERENV.dll
  USP10.dll
  uxtheme.dll
  VERSION.dll
  wbemcomn.dll
  wbemprox.dll
  wbemsvc.dll
  WININET.dll
  WINNSI.DLL
  winrnr.dll
  winsta.dll
  WINTRUST.dll
  wkscli.dll
  WLDAP32.dll
  WS2_32.dll
  wshbth.dll
  wship6.dll
  wshtcpip.dll
  WTSAPI32.dll
TSVNCache
tv_w32
  ADVAPI32.dll
  CFGMGR32.dll
  COMCTL32.dll
  CRTDLL.dll
  CRYPTBASE.dll
  DEVOBJ.dll
  devrtl.DLL
  GDI32.dll
  IMM32.DLL
  kernel32.dll
  KERNELBASE.dll
  LPK.dll
  MSCTF.dll
  msvcrt.dll
  newdev.dll
  ntdll.dll
  ole32.dll
  OLEAUT32.dll
  RPCRT4.dll
  sechost.dll
  setupapi.dll
  SHELL32.dll
  SHLWAPI.dll
  SspiCli.dll
  tv_w32.dll
  tv_w32.exe
  USER32.dll
  USP10.dll
  UxTheme.dll
tv_x64
TXPlatform
  ADVAPI32.dll
  CLBCatQ.DLL
  COMCTL32.dll
  CRTDLL.dll
  CRYPT32.dll
  CRYPTBASE.dll
  CRYPTSP.dll
  GDI32.dll
  iertutil.dll
  IMM32.DLL
  kernel32.dll
  KERNELBASE.dll
  LPK.dll
  MSASN1.dll
  MSCTF.dll
  msvcrt.dll
  NSI.dll
  ntdll.dll
  ole32.dll
  OLEAUT32.dll
  PSAPI.DLL
  RPCRT4.dll
  RpcRtRemote.dll
  rsaenh.dll
  safemon.dll
  sechost.dll
  SHELL32.dll
  SHLWAPI.dll
  SspiCli.dll
  SXS.DLL
  tv_w32.dll
  TXPFProxy.dll
  TXPlatform.exe
  urlmon.dll
  USER32.dll
  USP10.dll
  uxtheme.dll
  VERSION.dll
  WININET.dll
  WINTRUST.dll
  WS2_32.dll
wininit
winlogon
ZhuDongFangYu
  360base.dll
  360conf.dll
  360leakfixplugin.dll
  360NetBase.dll
  360SoftMgrS.dll
  ADVAPI32.dll
  apphelp.dll
  CFGMGR32.dll
  CLBCatQ.DLL
  cloudcom2.dll
  COMCTL32.dll
  CRYPT32.dll
  CRYPTBASE.dll
  DEVOBJ.dll
  dhcpcsvc.DLL
  dhcpcsvc6.DLL
  DNSAPI.dll
  fltlib.dll
  GDI32.dll
  heavygate.dll
  iertutil.dll
  IMM32.DLL
  IPHLPAPI.DLL
  kernel32.dll
  KERNELBASE.dll
  LINKINFO.dll
  LPK.dll
  MSASN1.dll
  MSCTF.dll
  mstask.dll
  msvcrt.dll
  mswsock.dll
  NETAPI32.dll
  netutils.dll
  NSI.dll
  ntdll.dll
  ole32.dll
  OLEAUT32.dll
  profapi.dll
  propsys.dll
  PSAPI.DLL
  qutmload.dll
  RASAPI32.dll
  rasman.dll
  RPCRT4.dll
  RpcRtRemote.dll
  rtutils.dll
  SAMCLI.DLL
  SAMLIB.dll
  sechost.dll
  secur32.dll
  SETUPAPI.dll
  SHELL32.dll
  SHLWAPI.dll
  srvcli.dll
  SspiCli.dll
  taskschd.dll
  urlmon.dll
  USER32.dll
  USERENV.dll
  USP10.dll
  VERSION.dll
  WININET.dll
  WINMM.dll
  WINNSI.DLL
  WINTRUST.dll
  wkscli.dll
  WS2_32.dll
  WTSAPI32.dll
  zhudongfangyu.exe
请按任意键继续. . .

相关文章
|
1月前
|
存储 监控 算法
电脑监控管理中的 C# 哈希表进程资源索引算法
哈希表凭借O(1)查询效率、动态增删性能及低内存开销,适配电脑监控系统对进程资源数据的实时索引需求。通过定制哈希函数与链地址法冲突解决,实现高效进程状态追踪与异常预警。
161 10
|
5月前
|
Shell Linux C语言
函数和进程之间的相似性
在一个C程序可以fork/exec另一个程序,其过程是先fork一个子进程,然后让子进程使用exec系列函数将子进程的代码和数据替换为另一个程序的代码和数据,之后子进程就用该程序的数据执行该程序的代码,从而达到程序之间相互调用的效果。在学了C语言、C++或是JAVA等高级语言,你会知道,在这些语言中的函数是可以相互进行见调用的,但是在学习了Linux的前面的知识后,你就会有意无意的认识到其实进程也是与函数有相同之处的,进程之间也是可以相互调用的。程序之间相互调用带来的好处之一。那么下面就将这部分内容扩展。
97 0
|
9月前
|
C#
C# 中关于补位的写法 PadLeft,PadRight 函数
C# 中的 `PadLeft` 和 `PadRight` 是 String 类提供的用于字符串补位的实用方法。`PadLeft` 在字符串左侧填充指定字符,使其达到指定长度;`PadRight` 则在右侧填充。两者通过检查原字符串长度,计算需填充字符数,并创建新字符数组完成操作。时间复杂度为 O(n),适用于简单补位场景,但在大量操作时需注意性能影响。示例代码展示了如何使用这两个方法进行补位操作。
|
11月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
509 13
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
127 1
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
JavaScript 前端开发 PHP
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
531 0
|
数据采集 并行计算 安全
Python并发编程:多进程(multiprocessing模块)
在处理CPU密集型任务时,Python的全局解释器锁(GIL)可能会成为瓶颈。为了充分利用多核CPU的性能,可以使用Python的multiprocessing模块来实现多进程编程。与多线程不同,多进程可以绕过GIL,使得每个进程在自己的独立内存空间中运行,从而实现真正的并行计算。
|
Linux API
Linux源码阅读笔记07-进程管理4大常用API函数
Linux源码阅读笔记07-进程管理4大常用API函数

热门文章

最新文章

  • 1
    Java 中数组Array和列表List的转换
    587
  • 2
    JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
    551
  • 3
    通过array.reduce()实现数据汇总、条件筛选和映射、对象属性的扁平化、转换数据格式、聚合统计、处理树结构数据和性能优化,reduce()的使用详解(附实际应用代码)
    1322
  • 4
    通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
    387
  • 5
    通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
    243
  • 6
    多维数组操作,不要再用遍历循环foreach了!来试试数组展平的小妙招!array.flat()用法与array.flatMap() 用法及二者差异详解
    155
  • 7
    别再用双层遍历循环来做新旧数组对比,寻找新增元素了!使用array.includes和Set来提升代码可读性
    179
  • 8
    Array.forEach实战详解:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能
    126
  • 9
    深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
    439
  • 10
    JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
    816