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了吧!

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

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

 

转载于:https://www.cnblogs.com/wuzhang/p/wuzhang20151031.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款流行的跨平台游戏引擎,它也提供了一套完整的网络通信解决方案,包括支持WebSocket协议的服务器和客户端应用程序。 在Unity中,可以使用WebSocket Sharp这个第三方插件来实现WebSocket通信。WebSocket Sharp是一个开源的C#实现的WebSocket协议库,它可以让我们在Unity中轻松地创建WebSocket服务器和客户端应用程序。 对于WebSocket服务器,我们可以在Unity中创建一个新的C#脚本,并使用WebSocket Sharp库来编写服务器端逻辑。我们可以定义连接、断开连接时的回调函数,并处理接收到的消息。服务器可以与多个客户端建立连接,并通过WebSocket协议进行双向通信。例如,我们可以使用WebSocket服务器在游戏中实现多人联机功能,让多个客户端之间进行实时的数据交互。 对于WebSocket客户端,我们同样可以使用WebSocket Sharp库来创建。在Unity中,我们可以创建一个新的C#脚本,使用WebSocket Sharp库来编写客户端的逻辑。客户端可以连接到一个WebSocket服务器,并发送消息给服务器,也可以接收服务器端发送过来的消息。客户端可以在游戏中与其他玩家或服务器进行实时通信,或者接收实时更新的数据。 总的来说,Unity提供了强大的网络通信解决方案,包括WebSocket服务器和客户端应用程序。借助WebSocket Sharp库,我们可以用C#在Unity中开发WebSocket服务器和客户端,并通过WebSocket协议实现实时通信和数据交互。这为我们开发基于网络的游戏和应用程序提供了很大的便利和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值