Process.Start解决开机启动问题

问题
每天开机都会打开几个必要的程序,比如QQ、unity、浏览器这些,如果手动打开不仅没效率还影响心情,在开机启动里设置启动项是个不错的办法,但是过一段时间就会提示xxx.dll丢失,xxx.exe启动异常。。。
解决
利用UnityEngine.Application .OpenURL 或者System.Diagnostics.Process.Start来把这种风险降至最低。比如我平时要启动四个程序,现在只需要启动一个,大大降低了发生此错误的概率…

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class FontTest : MonoBehaviour
{
    public Text text;//输入文本
    public Text text2;//展示、提示文本
    public Text text3;//提示文本
    private GameObject button;
    private Transform canvas;
    int shiftY = 450;
    private IEnumerator Start()
    {
        button = Resources.Load("Button") as GameObject;
        canvas = GameObject.Find("Canvas").transform;
        index = PlayerPrefs.GetInt("Key");
        if (index == 0)
        {
            PlayerPrefs.SetInt("Key", 0);
            text3.text = "没有可执行的任务";
        }
        else
        {
            Debug.Log(index);
            text3.text = "本次执行的任务如下:\n";
            text2.text = null;
            for (int i = 1; i < index + 1; i++)
            {
                yield return new WaitForSeconds(1);
                string filePath = PlayerPrefs.GetString(i.ToString());
                System.Diagnostics.Process.Start(filePath);
                text2.text += PlayerPrefs.GetString(i.ToString()) + "\n";
                GameObject clone = Instantiate(button);
                Button mb = clone.GetComponent<Button>();
                mb.transform.SetParent(canvas);
                mb.gameObject.transform.position = new Vector3(990, shiftY, 0);
                shiftY -= 35;
                mb.GetComponentInChildren<Text>().text =     filePath.Substring(filePath.LastIndexOf('/') + 1);
                string _key = i.ToString();
                mb.onClick.AddListener(delegate { RemoveKey(_key, mb.gameObject); });
            }
        }
    }

    public void RemoveKey(string key, GameObject game)
    {
        PlayerPrefs.DeleteKey(key);
        index--;
        PlayerPrefs.SetInt("Key", index);
        Debug.Log(game.name);
        text3.text = "已经移除------" + game.GetComponentInChildren<Text>().text;
        game.GetComponentInChildren<Button>().interactable = false;
    }

    private int index = 0;
    public void AddMisson()
    {
        int mIndex = PlayerPrefs.GetInt("Key");
        mIndex++;
        string filePath = text.text.Replace("\\", "/");
        PlayerPrefs.SetString(mIndex.ToString(), filePath);
        PlayerPrefs.SetInt("Key", mIndex);
        text3.text = "成功添加------" + filePath.Substring(filePath.LastIndexOf('/') + 1);

        GameObject clone = Instantiate(button);
        Button mb = clone.GetComponent<Button>();
        mb.transform.SetParent(canvas);
        mb.gameObject.transform.position = new Vector3(990, shiftY, 0);
        shiftY -= 35;
        mb.GetComponentInChildren<Text>().text = filePath.Substring(filePath.LastIndexOf('/') + 1);
        string _key = PlayerPrefs.GetInt("Key").ToString();
        Debug.Log(_key);
        mb.onClick.AddListener(delegate { RemoveKey(_key, mb.gameObject); });
    }

    public void ClearList()
    {
        PlayerPrefs.DeleteAll();
        text3.text = "已经清空完毕,请重新指定任务";
    }

    public void ExitGame()
    {
        Application.Quit();
    }
}

写完运行之后呢,打开是这个样子:
这里写图片描述
addtask是添加一个任务,在下边框写入文件路径,
cleartask是清空所有的任务,
exit是退出程序,
每创建一个任务会生成对应的button,点击button会取消对应的任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值