美文网首页
Kinect与外界exe程序的交互

Kinect与外界exe程序的交互

作者: 李伟13 | 来源:发表于2021-04-25 16:24 被阅读0次

参考
[1]https://blog.csdn.net/qq_39097425/article/details/81912745
程序名是去除exe后缀的名字
相对路径的根目录是工程目录(最高级的目录,与Assets/Library等同级)

  • 隐藏窗口
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
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 = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.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("chrome"))
                return;
            else
                StartProcess(outputPath);
        }
        if (GUI.Button(new Rect(10, 60, 200, 50), "杀死应用进程"))
        {
            KillProcess("chrome");
        }
        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("chrome");
                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!");
            }
        }
    }
 
}

相关文章

  • Kinect与外界exe程序的交互

    参考[1]https://blog.csdn.net/qq_39097425/article/details/81...

  • 11.python调用QT制作的dll--Apple的学习笔记

    一,前言 今天我想到一个应用,就是python控制QT程序,但是这样实现等于python调用exe,感觉少了交互,...

  • 【终端】MAC下配置ZSH

    Shell是Linux/Unix的一个外壳。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把...

  • 2018 10 22

    排查大健康中企业用户与外界的交互模块

  • Java I/O 原理分析

    IO 是什么 作用:和外界做数据交互。 I/O是什么:输入,输出。输入:从程序外部读数据到程序内部。输出:从程序内...

  • kinect学习总结

    本周重点学习《Kinect体感程序设计入门》,且已翻译完英文文献。 Kinect传感器所能获取的基础信息共有5种:...

  • windows 自定义服务启动项(instsrv.exe/srv

    使用instsrv.exe+srvany.exe将应用程序安装为windows服务 instsrv.exe.exe...

  • kinect交互沙盘项目笔记

    这个项目首先是有人在微信上问我是不是能够做这个项目,然后我看了下,因为之前用processing和kinect连接...

  • Python-part3-基础

    与用户交互 1、什么是与用户交互 程序等待用户输入一些数据,然后程序执行完毕后为用户反馈信息 2、为何程序要与用户...

  • 动态加载dll并执行及卸载

    写一个exe程序: 写一个dll程序: 把这个dll程序拷贝到exe程序的目录下,然后执行看效果。

网友评论

      本文标题:Kinect与外界exe程序的交互

      本文链接:https://www.haomeiwen.com/subject/hegdrltx.html