0

以下を使用して Catia にラッチを掛けました。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim boolCatAlive As Boolean
    boolCatAlive = False

    Try
        Dim myCatia As INFITF.Application
        myCatia = Interaction.GetObject(vbNullString, "CATIA.Application")
        boolCatAlive = True

    Catch ex As Exception
        boolCatAlive = False
    End Try

    Select Case boolCatAlive
        Case True
           'continue loading app, do my stuff

        Case Else
           'end this now
            MsgBox("No running CATIA instance detected, please start a new CATIA instance and re-run this program.", MsgBoxStyle.Critical, "Error")
            End
    End Select

End Sub

これは、アプリをロードするかどうかを決定する、フォームのロード時の単純なブール値スイッチです。

これは問題なく動作しますが、アプリの起動時に一度だけチェックを行っています。ユーザーがアプリの実行中に CATIA を終了した場合、アプリが通知を受けて CATIA COM リンクが無効になったことを認識できるように、CATIA ステータスを継続的に検出する方法はありますか?

たとえば、それを使用して選択の変更を検出することもできますか?

4

3 に答える 3

1

タイマーを使用して常にチェックできます。タイマーを追加し、TICK イベントに同じコードを指定します。これを回答として投稿して申し訳ありません。コメントを投稿するのに十分な評判がありません。

http://vb.net-informations.com/gui/timer-vb.htm

このリンクは役に立ちます。

于 2014-12-26T08:53:49.233 に答える
0

ありがとう、それはうまくいきます。

このコードを Tick イベント内に配置し、タイマーを有効に設定し、1000ms 間隔を使用して CATIA リンクを 1 秒ごとにチェックします。

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Dim boolCatAlive As Boolean
    boolCatAlive = False

    Try
        Dim myCatia As INFITF.Application
        myCatia = Interaction.GetObject(vbNullString, "CATIA.Application")
        boolCatAlive = True

    Catch ex As Exception

        boolCatAlive = False

    End Try
End Sub
于 2014-12-26T12:30:55.950 に答える