C#系统调用相关代码

操作系统实验要团队协作,我对C#稍微熟悉一点,所以用csharp对大家的模块做了一下调用

中间要用到调用和监视,所以又google了一下,代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace 窗体调用
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string appName = "calc.exe";
        private string baseadd = System.Windows.Forms.Application.StartupPath;
        /// <summary>
        /// 1. 启动外部程序,不等待其退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {

            Process.Start(appName);
            MessageBox.Show(String.Format("外部程序 {0} 启动完成!", this.appName), this.Text,
                MessageBoxButtons.OK, MessageBoxIcon.Information);


        }


        /// <summary>
        /// 2. 启动外部程序,等待其退出
        /// </summary>
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                Process proc = Process.Start(appName);
                if (proc != null)
                {
                    proc.WaitForExit(3000);
                    if (proc.HasExited)
                        MessageBox.Show(String.Format("外部程序 {0} 已经退出!", this.appName), this.Text,
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
                    else
                    {
                        // 如果外部程序没有结束运行则强行终止之。
                        proc.Kill();
                        MessageBox.Show(String.Format("外部程序 {0} 被强行终止!", this.appName), this.Text,
                            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message, this.Text,
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        /// <summary>
        /// 3. 启动外部程序,无限等待其退出
        /// </summary>
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                Process proc = Process.Start(appName);
                if (proc != null)
                {
                    proc.WaitForExit();
                    MessageBox.Show(String.Format("外部程序 {0} 已经退出!", this.appName), this.Text,
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message, this.Text,
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        /// <summary>
        /// 4. 启动外部程序,通过事件监视其退出
        /// </summary>
        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                // 启动外部程序
                Process proc = Process.Start(appName);
                if (proc != null)
                {
                    // 监视进程退出
                    proc.EnableRaisingEvents = true;
                    // 指定退出事件方法
                    proc.Exited += new EventHandler(proc_Exited);
                }
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message, this.Text,
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        /// <summary>
        /// 外部程序退出事件
        /// </summary>
        void proc_Exited(object sender, EventArgs e)
        {
            MessageBox.Show(String.Format("外部程序 {0} 已经退出!", this.appName), this.Text,
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                // 启动外部程序
                string app = baseadd + "\\cppTest.exe";
                Process proc = Process.Start(app);
                if (proc != null)
                {
                    // 监视进程退出
                    proc.EnableRaisingEvents = true;
                    // 指定退出事件方法
                    proc.Exited += new EventHandler(proc_Exited);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Hi~,出错啦!\n"+ex.Message,"警告");
                //MessageBox.Show(ex.Message, this.Text,MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        //private void button5_Click(object sender, EventArgs e)
        //{
        //    MessageBox.Show(Process.GetCurrentProcess().MainModule.BaseAddress.ToString());
        //    MessageBox.Show(System.Windows.Forms.Application.StartupPath );
        //}
    }
}
 

系统调用DEMO


CSharp窗体调用DEMO_2010-01-10_csdy.rar

posted @ 2010-01-10 20:58  麦田里的守望者  阅读(404)  评论(0编辑  收藏  举报