Unity 定时开启/关闭外部应用

  自从加入工作的队伍里,博客都荒废了,今天周末,难得清静,写篇博客!刚才看到了Process类,随手写了个小demo.给大家分享下!

首先大家要对Process类有一些简单的了解,参考资料:https://msdn.microsoft.com/zh-cn/library/system.diagnostics.process%28v=vs.110%29.aspx 如果有兴趣可以深入学习。学习过后,我们大家先要写一些挂机软件,分分钟就能搞定了!如果你编程更厉害可以写一些游戏外挂什么的,当然不建议大家这么做,自己写着玩还是很有意思的!

1,打开Uinity 建一新工程。

2.创建脚本文件 CallApplication.cs

using UnityEngine;
using System.Collections;
using System.Diagnostics;
using System.Collections.Generic;
using System;

public class CallApplication : MonoBehaviour
{

	// Use this for initialization
	private static string outputPath = "D:/kuwo/kuwomusic/8.0.3.0_BCS30/KwMusic.exe";
	private int x = 0, y = 0;
	private bool isOn = false;
	private int minute = 0;

	// Use this for initialization
	void Start()
	{
		//ListAllAppliction();
		UnityEngine.Debug.Log("当前应用:"  + Process.GetCurrentProcess().ProcessName+" 进程ID: "+Process.GetCurrentProcess().Id);
	}
	void OnGUI()
	{
		if (GUI.Button(new Rect(10, 10, 200, 50), "打开外部应用"))
		{
			if (CheckProcess("kwmusic"))
				return;
			else
				StartProcess(outputPath);
		}
		if (GUI.Button(new Rect(10, 60, 200, 50), "杀死应用进程"))
		{
			KillProcess("kwmusic");
		}
		if (GUI.Button(new Rect(10, 110, 200, 50), "开启定时关闭"))
		{
			minute = System.DateTime.Now.Minute + 1;
			isOn = true;
		}
		if (isOn)
		{
			GUI.contentColor = Color.red;
			GUI.Label(new Rect(10, 160, 160, 30), "\t倒计时:" + (60 - System.DateTime.Now.Second));
			if (System.DateTime.Now.Minute == minute)
			{
				UnityEngine.Debug.Log("自动关闭应用....");
				KillProcess("kwmusic");
				isOn = false;
			}
		}
	}
	/// <summary>
	/// 开启应用
	/// </summary>
	/// <param name="ApplicationPath"></param>
	void StartProcess(string ApplicationPath)
	{
		UnityEngine.Debug.Log("打开本地应用");
		Process foo = new Process();
		foo.StartInfo.FileName = ApplicationPath;
		foo.Start();
	}

	/// <summary>
	/// 检查应用是否正在运行
	/// </summary>
	bool CheckProcess(string processName)
	{
		bool isRunning = false;
		Process[] processes = Process.GetProcesses();
		int i = 0;
		foreach (Process process in processes)
		{
			try
			{
				i++;
				if (!process.HasExited)
				{
					if (process.ProcessName.Contains(processName))
					{
						UnityEngine.Debug.Log(processName + "正在运行");
						isRunning = true;
						continue;
					}
					else if (!process.ProcessName.Contains(processName)&&i>processes.Length)
					{
						UnityEngine.Debug.Log(processName + "没有运行");
						isRunning = false;
					}
				}
			}
			catch (Exception ep)
			{
			}
		}
		return isRunning;
	}
	/// <summary>
	/// 列出已开启的应用
	/// </summary>
	void ListAllAppliction()
	{
		Process[] processes = Process.GetProcesses();
		int i = 0;
		foreach (Process process in processes)
		{
			try
			{
				if (!process.HasExited)
				{
					UnityEngine.Debug.Log("应用ID:"+process.Id+"应用名:"+process.ProcessName);
				}
			}
			catch (Exception ep)
			{
			}
		}
	}
	/// <summary>
	/// 杀死进程
	/// </summary>
	/// <param name="processName">应用程序名</param>
	void KillProcess(string processName)
	{
		Process[] processes = Process.GetProcesses();
		foreach (Process process in processes)
		{
			try
			{
				if (!process.HasExited)
				{
					if (process.ProcessName == processName)
					{
						process.Kill();
						UnityEngine.Debug.Log("已杀死进程");
					}
				}
			}
			catch (System.InvalidOperationException)
			{
				//UnityEngine.Debug.Log("Holy batman we‘ve got an exception!");
			}
		}
	}

}

3.将脚本挂到摄像机上即可。

4.Ctrl+P走你!

检查当前打开的进程(系统应用除外),获取到之后,怎么操作It‘s up to you!

5,接着看受否可以启动外部应用,我就以酷我音乐盒为例吧!

还真的打开了啊!

6,试试关闭它吧。

真的关了,再次打开。

再试试定时关闭,1分钟测试时间!

已经OK了吧!

下面简单的看下代码,主要就有这几个方法:

大家可以自己去扩充方法!

时间: 2024-07-29 08:29:32

Unity 定时开启/关闭外部应用的相关文章

C#语言实现定时开启或禁用网卡小程序

C#语言实现定时开启/禁用网卡 程序运行效果图 程序实现主要代码 源代码工程文件(VS2013工程文件编译通过) 查看网卡名称附图 1.win7旗舰版运行效果图: 2.程序实现主要代码: /// 网卡列表 1 /// <summary> 2 /// 网卡列表 3 /// </summary> 4 public void NetWorkList() 5 { 6 string manage = "SELECT * From Win32_NetworkAdapter"

教你如何开启/关闭ubuntu防火墙

教你如何开启/关闭ubuntu防火墙 安装方法  sudo apt-get install ufw 当然,这是有图形界面的(比较简陋),在新立得里搜索gufw试试-- 使用方法 1 启用  sudo ufw enable  sudo ufw default deny 作用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常). 2 关闭  sudo ufw disable 2 查看防火墙状态  sudo ufw status 3 开启/禁用相应端口或服务举例  sudo uf

Linux下开启关闭防火墙

一.Linux下开启/关闭防火墙命令 1) 永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后复原 开启: /etc/init.d/iptables start 关闭: /etc/init.d/iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作. 在当开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptable

Windows编程 - 开启/关闭/遍历程序的类 代码(C++)

开启/关闭/遍历程序的类 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifnde

LINUX服务开启关闭建议

1.操作系统centos5.5 服务名称 功能 默认 建议 备注 NetworkManager 用于自动连接网络 关闭 关闭 对服务器没用 acpid 电源的开关等检测管理 开启 关闭 对服务器没用 anacron 一种计划任务管理 开启 开启 apmd 高级电源管理 开启 开启 atd 在指定时间执行命令 开启 关闭 如果用crond,则可关闭它 auditd 开启 自定 如果用selinux,需要开启它 autofs 文件系统自动加载.卸载 开启 自定 只在需要时开启它,可以停止 avahi

MySQL5.7在线开启/关闭GTID

MySQL5.7在线开启/关闭GTID 环境介绍 Part1:写在最前 截止本文撰写当日,MySQL5.7.16是官网的最新稳定版,本文将用MySQL5.7.16来进行演示.从MySQL5.6开始,支持了GTID复制模式,这种模式其实是把双刃剑,虽然容易搭建主从复制了,但使用不当,就容易出现一些错误,例如error 1236.在MySQL5.6如果开启GTID模式,需要在my.cnf中加入以下几个参数: ①log-bin=mysql-bin ②binlog_format=row ③log_sla

CentOS开启关闭防火墙

centos开启和关闭防火墙命令(1)临时生效,重启后还原开启: # service iptables start关闭: # service iptables stop(2)永久性关闭,重启后不会还原开启: # chkconfig iptables on关闭: # chkconfig iptables off CentOS开启关闭防火墙,布布扣,bubuko.com

Android -- Service的开启关闭与生命周期

Service是Android 系统中的四大组件之一,是在一段不定的时间运行在后台,不和用户交互应用组件. service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化等等. 生命周期                                                                                  context.startService() 启动流程: con

Web服务器管理系列:12、开启关闭Ping命令

有些时候网站打开速度会很慢,我们要排查故障所在,需要用到Ping命令,但是Windows Server 2008防火墙默认是关闭Ping的 我们可以通过以下方法开启Ping 打开防火墙->高级安全: 选择文件和打印机共享(回显请求 - ICMPv4-In) 选择启用: 记得用完Ping后一定要将其关闭,因为DDos攻击就是借助于Ping 这里解释一下: ping 一个发送测试数据包检测网络状况的命令 -l 65500 发送包含65500字节数据量的ECHO数据包 -n 100 发送100遍ECH