例えば、「*.TST」と言う拡張子に関連付けした「TEST.EXE」というアプリがあるとします。
エクスプローラーでA.TSTをダブルクリックするとTEST.EXEが起動し処理します。そのとき、TEST.EXEを終了せずに、
B.TSTをダブルクリックすると、新規にTEST.EXEが起動するのではなく、既に動いているTEST.EXE
で処理するにはどのようにすればよいのでしょうか。
1例を挙げます。
# 某所で回答した内容を改良したものです。
プロジェクト(標準EXE)を新たに作成し、
Form1 上に Label1 を貼り付け、
Form1 の LinkMode プロパティを 1 (ソース)にし、
下のコードを貼り付けて、実行ファイル Test.exe を作成して下さい。
(それ以外のプロパティなどは、デフォルトのままにして下さい。)
そして、その Text.exe に tst の拡張子を関連付けします。
Option Explicit
Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
Cancel = False
myProc CmdStr
End Sub
Private Sub Form_Load()
If App.PrevInstance = True Then
With Label1
If .LinkMode = vbLinkNone Then
.LinkTimeout = -1
.LinkTopic = "Project1|Form1"
.LinkMode = vbLinkManual
End If
.LinkExecute Command()
.LinkMode = vbLinkNone
End With
Unload Me
Else
Label1.Visible = False
Me.AutoRedraw = True
myProc Command()
End If
End Sub
Private Sub myProc(ByVal sFilePath As String)
Print sFilePath
End Sub
A.tst を実行すると、 Test.exe が実行され、
そのフォーム上に A.tst のパスが表示されます。
さらに、 B.tst を実行すると、
既に実行されている Test.exe に B.tst のパスが追加されます。
上手くいきました。ありがとうございました。
ツイート | ![]() |