2重起動時に既に動いているPGで処理するには?

解決


うつろ星人  2003-08-30 07:50:39  No: 79204

例えば、「*.TST」と言う拡張子に関連付けした「TEST.EXE」というアプリがあるとします。

エクスプローラーでA.TSTをダブルクリックするとTEST.EXEが起動し処理します。そのとき、TEST.EXEを終了せずに、
B.TSTをダブルクリックすると、新規にTEST.EXEが起動するのではなく、既に動いているTEST.EXE
で処理するにはどのようにすればよいのでしょうか。


とろ  2003-09-01 19:07:22  No: 79205

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 のパスが追加されます。


うつろ星人  2003-09-01 23:29:51  No: 79206

上手くいきました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加