いつもお世話になっております。
VBからVISIOのファイルを起動する処理を行っています。
起動には、Shell関数を用いて起動させています。
ボタンを押すごとに起動するのですが、これだと2重起動が防げません。
指定したファイルが起動中かどうかを調べるにはどうしたら良いのでしょうか?
また他の回避策をご存知の方、ご教授お願いできますでしょうか?
宜しくお願いいたします。
プロセスをコントロールできると
2重起動を防げますよ。
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim insProcess As Process() 'プロセスインスタンス
Dim strProcessName As String 'プロセス名
strProcessName = Process.GetCurrentProcess.ProcessName
insProcess = Process.GetProcessesByName(strProcessName)
If UBound(insProcess) > 0 Then
MsgBox("すでに起動しています")
End
End If
End Sub
izuMinさんの方法はVB.NETでの自分自身の二重起動の防止方法ですので、
おさるMAXさんの質問とは少し違うと思います。
Shell関数を使っているということから、VB6だと思うのですが、
どのようにしてVISIOのファイルを起動しているのですか?
Visio.exeへの引数としてファイル名を渡しているのであれば、
Visio側が二重起動防止をしてくれるはずですが。
私が試した所、同じファイルを2回以上Shellで起動しようとしても、
最初に開いたVisioの画面にフォーカスが当たるだけで、
2つ以上Visioが開いたりはしませんでした。