none
softの処理終了後に次をスタートさせたい RRS feed

  • 質問

  • 宜しくお願いします

    studio professinal 2013 vb 使用

    botton click で下記を動作させる(excel file を open)

           Process.Start("excel.exe", TextBox1.Text + "\" + TextBox2.Text + ".xlsx")
           GC.Collect()
           GC.WaitForPendingFinalizers()
           GC.Collect()
           Application.Restart()

    excel file は open するが、再スタートが excel open と同時に起動してしまいます。

    excel終了後に、再スタートをさせたいのですが どうすべきでしょうか?

              

    t.suzu

    2016年2月3日 1:09

回答

すべての返信

  • こんにちは。

    単純な方法であれば、プロセス終了まで待機することでしょうか。

    Dim hoge = Process.Start("excel.exe", "hoge.xlsx")
    hoge.WaitForExit()
    Application.Restart()

    WaitForExitで呼び出し元が停止するのが望ましくないのであれば、Exitedイベントをハンドルする方法もあります。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim hoge = Process.Start("notepad")
        hoge.EnableRaisingEvents = True
        AddHandler hoge.Exited, AddressOf hoge_Exited
    End Sub
    
    Private Sub hoge_Exited(sender As Object, e As EventArgs)
        Application.Restart()
    End Sub
    


    2016年2月3日 1:23
    モデレータ
  • 以下のスレッドに同様の内容が記載されています

    https://social.msdn.microsoft.com/Forums/ja-JP/4def8020-e18b-4bad-bf3e-491191c71499?forum=vbgeneralja

    以下、抜粋です。

    ------------------------------------------------------------------------------------------------------------------------------

    Process.Start静的メソッドはProcessオブジェクトを返しますが、この返されたProcessオブジェクトに、実行中のプロセスが終了したときに呼び出されるExitedイベントが存在しています。

    http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.exited.aspx

    また、プロセスが終了するまで待機するには、 Process.WaitForExit メソッドを使えばいいと思います。

    以下、どぼんさんの記事も参考になりそうなので提示しときます。

    http://dobon.net/vb/dotnet/process/openfile.html

    • 回答の候補に設定 星 睦美 2016年2月3日 4:46
    • 回答としてマーク 星 睦美 2016年4月13日 5:42
    2016年2月3日 1:28
  • うまく作動しました

    有難うございます


    t.suzu

    2016年2月3日 2:02
  • T_SUZ-SONGS2 さん、こんにちは。フォーラム オペレーターの星 睦美です。

    より活発なユーザー同士の情報交換のために、フォーラム ユーザーからの回答が参考になりましたら投稿者から[回答としてマーク] をお願いいたします。

    (自分の質問以外のスレッドに参考になる良い回答がありましたら、その際は[投票] いただければフォーラムで役立つ情報を共有できます。)

    今後ともMSDN フォーラムをよろしくお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support


    • 編集済み 星 睦美 2016年2月3日 4:54 リンク
    2016年2月3日 4:53
  • 念のため。
    Excel がすでに起動している状態で Process.Start で関連付け起動すると、null が帰ってくるとこがあります。
    要件や環境次第では問題になるかもしれませんので、ご注意を。

    Excel を明示的に起動する、今の形なら大丈夫かもしれませんが。

    2016年2月4日 3:26
    モデレータ