首页 > 系统相关 >C# 启动或关闭window系统某个进程

C# 启动或关闭window系统某个进程

时间:2023-07-15 10:11:21浏览次数:36  
标签:ServiceList string C# var Process window 某个 proc name

C# 启动、关闭windows系统某个进程

 

private Dictionary<string, string> ServiceList = new Dictionary<string, string>();//服务文件对应服务名称

public void Init(){

  ServiceList.Add("print", "SP");
  ServiceList.Add("cashbox", "SC");
  ServiceList.Add("display", "SD");

}

 

//开启某个服务进程

/// name为ServiceList中的key

private bool ExistService(string name)

{

  try

  {

    if(ServiceList.Keys.Contains(name))

    {

      var service = ServiceList[name];

      Process[] pros = Process.GetProcessesByName(service);

      if(pros!=null && pros.Length)

      {

        

      }

      else

      {

           Process proc = new Process();

        var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,$"{service}.exe");

        proc.StartInfo.FileName = path;

        proc.StartInfo.CreateNoWindow = true;

        proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

        proc.StartInfo.UseShellExecute = false;

        proc.Start();

        string def="-1";

        string flag = "";

        string falgtime="";

        switch(name)

        {

          case "print":

          flag = IniHelper.Read("default","request",def,$"{name}".ini);

          int.TryParse(flag,out printIndex);

          flagtime = IniHelper.Read("default","time",def,$"{name}".ini);

          long.TryParse(falgtime,out printTicks);

          break;

        }

      }

      return true;

    }

  }

  catch(Exception ex)

  {

    logger.Error($"{ex.Message}---{ex.StackTrace}");

    return false;

  }

  return false;

}

 

//关闭某个服务进程

public void CloseDevice()

{  

  foreach(var item in ServiceList)

  {

    Process[] process = Process.GetProcessesByName(item.Value);

    if(process!=null && process.Length>0)

    {

      foreach(var pro in process)

      {

        pro.Kill();

      }

    }

  }

}

 

 

IniHelper.cs

public static string Read(string section, string key, string  def, string fileName)

{

  var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,fileName);

  StringBuilder sb = new StringBuilder(1024);

  GetPrivateProfileString(section,key,def,sb,1024,filepath);

  return sb.ToString();

}

 

///<summary>

///为INI文件中指定的节点取得字符串

///</summary>

///<param name="lpAppName">欲在其中查找关键字的节点名称</param>

///<param name="lpKeyName">欲获取的项名</param>

///<param name="lpDefault">指定的项没有找到时返回的默认值</param>

///<param name="lpReturnendString">指定一个字符串缓冲区,长度至少为nSize</param>

///<param name="nSize">指定装载到lpReturnendString缓冲区的最大字符数量</param>

///<param name="lpFileName">INI文件完整路径</param>

///<returns>复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符</returns>

[DllImport("kernel32')]

private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnendString, int nSize, string lpFileName);

 

标签:ServiceList,string,C#,var,Process,window,某个,proc,name
From: https://www.cnblogs.com/jnyyq/p/17555592.html

相关文章

  • go context
    使用场景在协程之间传递上下文context接口typeContextinterface{//返回绑定当前context的任务取消的截止时间//如果没有设定期限,将返回ok==falseDeadline()(deadlinetime.Time,okbool)//绑定当前context的任务取消时返回一个关闭的channel......
  • SAP IDOC 概述
    SAPIDoc是SAP系统中一种标准数据结构,它用于在SAP系统之间或SAP系统与非SAP系统之间交换数据。IDoc代表中间文档(IntermediateDocument)。这是一种自包含的数据结构,可以用于SAP系统之间或SAP系统与外部系统之间的电子数据交换。IDoc包含一组标准化的数据,可以用于通信,这些数据与发送......
  • SAP ABAP 函数 TR_REQUEST_CHOICE
    TR_REQUEST_CHOICE是SAPABAP中的一个函数模块,它用于在系统中处理传输请求。传输请求是SAP系统中的一个重要概念,它用于管理和控制系统中对象的传输。这些对象可以是程序、表、视图等。TR_REQUEST_CHOICE函数模块提供了一种界面,允许用户在系统中选择一个传输请求。它有一个......
  • Ubuntu找不到ip无法ssh登录,解决方法开机自动重启dhcp
    问题VMware里安装的Ubuntu虚拟机,每次开机ifconfig都找不到网卡ens33,就没有ip地址,无法通过xshell进行ssh登录。每次都手动执行sudodhclienens33才可以,下面通过脚本让其开机自启。配置脚本sudovim/etc/rc.local文件里写入下面内容:#!/bin/bashdhclientens33添加执行权限......
  • docker迁移默认的/var/lib/docker 到指定数据盘目录
    1、先停止docker 服务systemctlstopdocker2、创建docker挂载数据盘目录mkdir-p/data/docker/lib3、安装迁移工具yuminstallrsync-y4、迁移数据到新目录rsync-azP/var/lib/docker/data/docker/lib/5、修改docker配置文件docker.service vim/usr/lib/syst......
  • 关于 SAP ABAP 事务码 SM30 里的 Restrict Data Range
    SAPABAP事务码SM30里的RestrictDataRange区域的Enterconditions和Variant这两个选项有什么作用?SAPABAP中的SM30事务码用于维护表的条目。在使用SM30事务时,RestrictDataRange区域允许用户定义一些限制条件,可以帮助缩小查询或更改的数据范围。这对于大型表......
  • Leetcode283. 移动零
    classSolution{public:voidmoveZeroes(vector<int>&nums){if(nums.empty())return;intn=nums.size();intidx=n-1;while(idx>=0&&nums[idx]==0)idx--;for(inti=0;i<idx;i++)......
  • abc083d <思维 贪心>
    题目D-WideFlip思路参考live4m的博客其实全0和全1是无所谓的,只需要全部相同就行了,因为每次操作是令一个>=k区间的翻转,如果是全1,令[1,n]再翻转一次即可.考虑[1,i]已经相同,s[i]!=s[i+1]时如何操作,要使得[1,i+1]相同,要么[1,i]翻转,要么[i+1,n]翻转,为了使k最大,显......
  • Docker学习路线6:使用第三方镜像
    第三方镜像是在DockerHub或其他容器注册表上提供的预构建Docker容器镜像。这些镜像由个人或组织创建和维护,可以作为您容器化应用程序的起点。查找第三方镜像DockerHub是最大和最受欢迎的容器镜像注册表,包含官方和社区维护的镜像。您可以根据名称或要使用的技术搜索镜像。例......
  • C语言 #ifdef 和 #if defined区别
    注意两者都有个define的作用,区别在于使用方式上。前者的通常用法是:\#ifdefXXX....\#else....\#endif只能在两者中选择是否有定义。对于后者,常用法是:\#ifdefinedxxx1....\#elifdefinedxxx2....\#elifdefinedxxx3....\#endif......