サンプル集  >  C#  >  別exeの起動
別exeの起動
2014/01/28

ディレクトリ情報取得 で作った exe を起動してみます。

◆環境
OS Windows 7 Professional Service Pack 1 64bit
C# Microsoft Visual C# 2010 01018-587-4054044-70237

[ファイル]-[新規作成]-[プロジェクト]を選択。

[Windows フォーム アプリケーション]を選択し、名前に「CreateProcessTest」と入力し「OK」。

フォーム上にテキストボックス2つとボタンを1つ配置します。

ボタンをダブルクリックしてコードを編集します。

Form1.cs
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
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;
using System.IO;

namespace CreateProcessTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            textBox1.Text = "C:\\Temp\\dirlist.exe";

            textBox2.Text = "C:\\Temp";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ProcessStartInfo psi
            = new ProcessStartInfo(textBox1.Text);

            // 別exeの実行時引数
            psi.Arguments = textBox2.Text;

            // シェル機能を使わない
            psi.UseShellExecute = false;

            // 標準出力をリダイレクトする
            psi.RedirectStandardOutput = true;

            // 新しくウィンドウを作らない
            psi.CreateNoWindow = true;

            // 別exe起動
            Process proc = Process.Start(psi);

            // 別exeの標準出力を読み込み
            string output = proc.StandardOutput.ReadToEnd();

            // 読み込んだ標準出力を表示
            MessageBox.Show(output);
        }
    }
}

実行してみます。

このまま button1 を押します。

別exeである dirlist.exe が動き、出力結果を正しく取れました。

ネットワーク越しで実行できるか試してみます。

実行したところ、正しく動作しました。 ・・・と思ったのですが、少し挙動がひっかかるのでもう検証します。

というのもの dirlist.exe が 192.168.99.194 のPC(以下、リモートPC)上で実行されているのであれば、 フォルダの指定も C:\public としても正常に動作するはずです。 ところが C:\public を指定すると次のエラーが出ました。

また C:\Temp を指定すると、ローカルPCの C:\Temp の内容が表示されました。

この挙動から、Process.Start() は \\192.168.99.194\dirlist.exe をローカルPCで実行しているようだという事が分かりました。 あくまでプロセスが生成されたのはローカルPC上のようです。

▲ PageTop  ■ Home


Copyright (C) 2014 ymlib.com