当前位置: 首页 > news >正文

休闲会所网站建设百度 官网

休闲会所网站建设,百度 官网,网络营销名词解释电子商务,wordpress后台html目录 设计初衷 开发运行环境 Craneoffice ProcessGC 运行主界面 管理任务与策略 其它设置 移动存储设备管理 核心代码-计时器监控 小结 设计初衷 在使用 COM 模式操作 OFFICE 组件的开发过程中#xff0c;当操作完相关文档后#xff0c;在某些情况下仍然无法释放掉…目录 设计初衷 开发运行环境 Craneoffice ProcessGC 运行主界面 管理任务与策略 其它设置 移动存储设备管理 核心代码-计时器监控 小结 设计初衷 在使用 COM 模式操作 OFFICE 组件的开发过程中当操作完相关文档后在某些情况下仍然无法释放掉 Word 或 EXCEL 等应用进程因此根据进程活动情况或时间点范围开发了一个强制杀掉指定进程名称的 WinForm 程序做为一种辅助工具运行在云服务器上命名为 Craneoffice ProcessGC。 开发运行环境 操作系统 Windows Server 2019 DataCenter .net版本 .netFramework4.0 或以上 开发工具VS2019  C# Craneoffice ProcessGC 该工具软件属绿色版无须安装直接运行 bin 目录下的 ProcessGC.exe 即可同目录下的 ProcessList.txt 为配置文件用于配置要释放的进程后续也可用工具程序进行操作。 运行主界面 运行后的主界面如下图 主界面显示了要回收的进程列表源引于 ProcessList.txt 文件配置如图示例我们可以看到欲回收的进程为EXCEL和WORD下面则显示已被回收的进程如果有的话。 下方显示 CPU 的利用率和可用内存情况。 系统会随时监测指定的进程名如果有则按指定的策略进行管理。 管理任务与策略 点击管理任务选项卡显示如下图 策略设置如下表 序号项说明1要添加回收的进程名请正确添加无须输入扩展名如果不确定名称则可以通过任务管理器进行查看2管理策略 共分三种方式 1、Force默认值表示符合条件则强制关闭 2、CPU 3、Memory 3回收时间差(秒)以秒为单位记录进程停止活动的时间超过停止活动时间的进程将被回收4上限指标 1、上限指标不能小于零。 2、当选用的策略为CPU时上限指标不能大于100即最高100%占用率 3、当选用的策略为Memory时指定为Mb值表示内存占用的最高上限 5检测时间标准 共有两种方式 1、ByProcess以进程时间计算默认 2、ByNowTime以启动当前时间计算 6回收动作 共有两种方式 1、Kill直接关闭释放进程默认 2、Command执行命令行操作 7相关动作命令当第6项回收动作为Command时此项为必输入项表示要执行的 WINDOWS 命令行操作8重新启用命令设置此项则当关闭或执行动作命令后尝试执行此命令9计划强制关闭时间(小时)可以设定小时分秒这个值前缀需要设置一个有效日期代表每到此时此分此秒则强制关闭进程 通过以上设置我们可以灵活的对进程的关闭方式进行控制以达到实际应用的目的。 其它设置 选择设置选项卡如下图 我们可设置窗口的透明度另外可以设置两个选项 1、只回收本程序启动时间以后的进程 2、只回收非激活窗口的进程 指非操作系统显式的应用进程。 3、管理密码默认值为111111用于关闭应用程序等操作。 移动存储设备管理 这个选项如下图 这是为移动设备存储数据库准备的一个选项点击停止服务可以有效的、安全的移除存储设备也可以继续启动服务。这个选项较少使用也需要谨慎使用因为它会尝试停止IIS、MS SQL SERVER 数据库服务等。 核心代码-计时器监控 private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e){DateTime cur_nowSystem.DateTime.Now;int cur_hourcur_now.Hour;int cur_mincur_now.Minute;int cur_seccur_now.Second;pc.CategoryNameProcessor;pc.CounterName% Processor Time;pc.InstanceName_Total;// pc.MachineNamemichaeljane;float pcvpc.NextValue();label7.TextCPU利用率(pcv).ToString() %;cpubar.Value(int)(pcv);pcmem.CategoryNameMemory;pcmem.CounterNameAvailable MBytes;pcmem.InstanceNamenull;// richTextBox1.Textpcpu.NextValue().ToString()\r\n;/* System.Diagnostics.PerformanceCounter[] mypc; System.Diagnostics.PerformanceCounterCategory mycat new System.Diagnostics.PerformanceCounterCategory(process);// Remove the current contents of the list.// Retrieve the counters.mypc mycat.GetCounters();// Add the retrieved counters to the list.richTextBox1.Text;for (int i 0; i mypc.Length; i) { richTextBox1.Text(mypc[i].CounterName)\r\n;} */// float cpuLoad pc.NextValue();try{label7.Text \r\n可用内存 pcmem.NextValue().ToString() M;}catch (Exception s){}statusBar1.Textcur_now.ToString(); //显示当前时间Process[] processes; //定义进程组processes System.Diagnostics.Process.GetProcesses(); //获得当前进程组Process process; //定义初始进程中间变量string _pname,_killstate; //定义进程名变量及进程回收状态字符串bool _killfalse; //是否要回收标志变量bool _phandlecheckBox2.Checked;int _gcSpan; //时间差变量DateTime _pdatetime,_checktime,_stdtime; //进程启动的时间变量和检测时间变量string[] _rv; //接受检测结果的数组System.TimeSpan _dd; //时间差的秒数变量 // string[] _processidnew string[1000]; // DateTime[] _processLastTimenew DateTime[1000]; // int[] _processLastMemnew int[1000];for(int i 0;iprocesses.Length-1;i){process processes[i]; //获得当前进程_pnameprocess.ProcessName.ToLower(); //获得进程名并转为小写try{_pdatetime process.StartTime; //获得进程的启动时间}catch(Exception e1){continue;}// _rvGetSubValueIndex(listBox1,_pname,|); //得到要回收的用户指定进程for(int li0;lilistBox1.Items.Count;li){_rvlistBox1.Items[li].ToString().Split(|);string ref_process_rv[0].ToLower().Trim();int ref_spanint.Parse(_rv[1].ToString());string ref_cl_rv[2].ToLower().Trim();float ref_rankfloat.Parse(_rv[3].ToString());string ref_stdtime_rv[4].ToLower().Trim();string ref_act_rv[5].ToLower().Trim();string[] ref_cmd1_rv[6].Split(↙);string[] ref_cmd2_rv[7].Split(↙);string ref_closetime_rv[8].Trim();// richTextBox1.Text_rv[0]_rv[1]\r\n;if(ref_process_pname) //如果是要回收的进程则进行处理{//如果在检测数组没有找到则添加到检测数中int _curpointSystem.Array.IndexOf(_processid,process.Id);if(_curpoint0){_stdtimeprocess.StartTime;if(ref_stdtimebynowtime){_stdtimeSystem.DateTime.Now;}System.Diagnostics.PerformanceCounter pcmnew System.Diagnostics.PerformanceCounter(Process,% Processor Time,_pname);try{AddArray(process.Id, _stdtime, process.WorkingSet, pcm);}catch(Exception e3){}continue;}// richTextBox1.Text((System.Diagnostics.PerformanceCounter)_processLastCPU[_curpoint]).NextValue().ToString()\r\n;try{float cur_rank ((System.Diagnostics.PerformanceCounter)_processLastCPU[_curpoint]).NextValue();_checktime System.DateTime.Now; //检测时间为当前时间//开始分析CPU策略if (ref_cl cpu){//如果当前进程的CPU占用率没有超过指定的上限则重置最后的检测时间为当前时间继续监测。if (cur_rank ref_rank){_processLastTime[_curpoint] _checktime;}}}catch(Exception e2){continue;}//开始分析memory策略if(ref_clmemory){float _curmemprocess.WorkingSet/(1024*1024);// richTextBox1.Text_pname _curmem.ToString()\r\n;//如果当前进程的内存占用没有超过指定的上限则重置最后的检测时间为当前时间继续监测。if(_curmemref_rank){_processLastTime[_curpoint]_checktime;}}_gcSpanref_span; //得到用户指定的回收时间差_killfalse;_pdatetime_processLastTime[_curpoint]; //得到进程的数组最后指定时间_dd_checktime-_pdatetime; //时间差以检测时间 减去 进行启动时间//如果时间差大于回收指定时间则可以回收进程KILL变量为真if(checkBox1.Checked){//只回收本程序启动以后的进程时间if((_dd.TotalSeconds_gcSpan)(_starttime_pdatetime)){_killtrue;}}else{if(_dd.TotalSeconds_gcSpan){_killtrue;}}//如果初期标识为可以关闭该进程并且策略为强制性关闭则进行内存判断if((_kill)(ref_clforce)){//如果内存有变化则表示进程仍在活动则不进行关闭并更新检测内容int _curmemprocess.WorkingSet;label6.Text_curmem.ToString() _processLastMem[_curpoint];if(_curmem!_processLastMem[_curpoint]){_processLastTime[_curpoint]_checktime;_processLastMem[_curpoint]_curmem;_killfalse;}}//如果指定了强制关闭时间则进行判断string close_tip;if(ref_closetime!){DateTime ref_clsDateTime.Parse(ref_closetime);if((ref_cls.Hourcur_hour)(ref_cls.Minutecur_min)(ref_cls.Secondcur_sec)){_killtrue;close_tip强制关闭计划启动计划时间为ref_closetime;}}//如果只回收死进程而当前进程为激活的窗口的话则不关闭if((_phandle)((int)process.MainWindowHandle!0)){_killfalse;}//如果可以回收则在文本框中添加回收状态并将进程关闭if(_kill){if(!process.HasExited){if(ref_actkill){// MessageBox.Show(has exited);_killstateclose_tip.进程_pname已被回收关闭策略为ref_cl动作为ref_act。进程的启动时间为_pdatetime.ToString()检测时间为_checktime.ToString()现已经超时(_dd.TotalSeconds-_gcSpan).ToString()秒回收时间单位是_gcSpan.ToString()秒。进程IDprocess.Id.ToString()进程主窗口句柄process.MainWindowHandle.ToString();process.Kill();richTextBox1.AppendText(_killstate\r\n);}if(ref_actcommand){// MessageBox.Show(has exited);string _return;for(int st0;stref_cmd1.GetLength(0);st){_returnref_cmd1[st] Result:WinExec(ref_cmd1[st],0).ToString()↙;}_killstateclose_tip.进程_pname已被回收关闭策略为ref_cl动作为ref_act执行了命令ref_cmd1。返回值为_return。进程的启动时间为_pdatetime.ToString()检测时间为_checktime.ToString()现已经超时(_dd.TotalSeconds-_gcSpan).ToString()秒回收时间单位是_gcSpan.ToString()秒。进程IDprocess.Id.ToString()进程主窗口句柄process.MainWindowHandle.ToString();richTextBox1.AppendText(_killstate\r\n);// process.Kill();}//清空当前进程检测数组元素_processid[_curpoint]0;_processLastTime[_curpoint]_checktime;_processLastMem[_curpoint]0;_processLastCPU[_curpoint]null;}//判断进程是否已经退出}}//if proecesselse //如果没有找到进程名称则二次判断任务是否提供了启动命令如果提供则运行它{}//end find process name}//li}//forprocesses System.Diagnostics.Process.GetProcesses(); //获得当前进程组for(int ali0;alilistBox1.Items.Count;ali){_rvlistBox1.Items[ali].ToString().Split(|);string ref_process_rv[0].ToLower().Trim();int ref_spanint.Parse(_rv[1].ToString());string ref_cl_rv[2].ToLower().Trim();float ref_rankfloat.Parse(_rv[3].ToString());string ref_stdtime_rv[4].ToLower().Trim();string ref_act_rv[5].ToLower().Trim();string[] ref_cmd1_rv[6].Split(↙);string ref_start_cmd_rv[7];string[] ref_cmd2_rv[7].Split(↙);bool _findfalse;if(ref_start_cmd!){for(int i 0;iprocesses.Length-1;i){process processes[i]; //获得当前进程string cur_pnameprocess.ProcessName.ToLower(); //获得进程名并转为小写if(cur_pnameref_process){_findtrue;}}if(!_find){string _return;for(int st0;stref_cmd2.GetLength(0);st){_returnref_cmd2[st] Result:WinExec(ref_cmd2[st],0).ToString()↙;}_killstate进程ref_process尝试启动关闭策略为ref_cl动作为ref_act启动命令为ref_cmd2。返回值为_return。;richTextBox1.AppendText(_killstate\r\n);}}}//end for listbox} 小结 开发这款小工具也是初识 System.Diagnostics与系统进程、事件日志和性能计数器进行交互的类的一个过程。 这里可以下载完整源码https://download.csdn.net/download/michaelline/89140846 工具仅作学习使用大家感兴趣的话可以按照自己的需求进行修改感谢您的阅读希望本文能对您有所帮助。
http://www.zqtcl.cn/news/927452/

相关文章:

  • 网站做seo外链常州营销型网站建设
  • 乐清门户网站建设网络推广关键词优化公司
  • 自己做的网站被攻击了企业展厅方案设计公司
  • 可信赖的郑州网站建设公司网站怎样实名认证
  • 创建一个网站的步骤是中国机械加工网招聘信息
  • 做电影解析网站烟台网站建设外贸
  • 做网站 网上接单汽车网站开发流程
  • 2017网站开发发展前景主页网站建设
  • 苏州手机网站建设费用上海企业制作网站
  • 网站上怎样做轮播图网站后台乱码怎么办
  • 专业网站建设品牌策划商务网站建设与维护考试
  • 网站开发手机版WordPress如何清空评论
  • 公司怎么建立网站吗010网站建设
  • 网站制作找哪家公司好湖北专业网站建设大全
  • 广州建设网站是什么关系wordpress 插件位置
  • 网站建设工作室 怎么样做一个网站需要多少钱
  • 北京网站制作人才免费企业网站源码
  • 微信商城网站怎么做网站备案是先做网站还是做完了备案
  • 工商局网站查询入口wordpress 文章列表顺序
  • 可以做平面设计兼职的网站模板商城建站
  • 织梦网站如何做301跳转畅销营销型网站建设电话
  • 新网企业邮箱保定seo
  • 河南国控建设集团招标网站网上注册公司核名流程
  • 推推蛙网站建设云南网站开发费用
  • 网站没服务器行吗价格低廉怎么换个说法
  • 用wordpress编写网站完整网站开发视频教程
  • 电商型网站建设价格ppt制作网站
  • 东莞做个网站查询工商营业执照
  • 从网址怎么看网站的域名租用云服务器多少钱
  • 网站开发技术有个人网页首页设计图片