首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATIA和VB.NET检测CATIA在外部app中的关闭

CATIA和VB.NET检测CATIA在外部app中的关闭
EN

Stack Overflow用户
提问于 2014-12-26 07:48:48
回答 3查看 1.5K关注 0票数 0

我用以下方法锁定了Catia:

代码语言:javascript
复制
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 -- app被通知并意识到CATIA COM链接已不再存在?

我也可以用它来检测选择的变化,例如?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-26 08:53:49

您可以随时使用timer.Add一个计时器来检查它,并在它的滴答event.sorry中指定相同的代码作为答复,我没有足够的声誉来发表评论。

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

这个链接将对你有帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-12-26 12:30:55

谢谢,效果很好。

我将这段代码放入Tick事件中,将计时器设置为enabled,并使用1000 use间隔每1秒检查一次CATIA链接。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2021-06-25 11:34:29

我建议在计时器中询问实际的Catia对象,而不是获取新对象。假设您有全局CatiaApp变量

在计时器里放这样的东西

代码语言:javascript
复制
Try
   If CatiaApp.Name.Length > 0 Then
   'catia is alive
   End If
Catch ex As Exception
   'catia is down
   CatiaApp = Nothing
End Try

如果Name.Length失败,您将得到一个异常,表明catia已经关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27654354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档