自從加入工作的隊伍里,博客都荒廢了,今天周末,難得清靜,寫篇博客!剛才看到了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了吧!
下面簡單的看下代碼,主要就有這幾個方法:
大家可以自己去擴充方法!
