【问题标题】:vb.net: logging off an rdp session will not trigger on_Disconnect eventvb.net:注销 rdp 会话不会触发 on_Disconnect 事件
【发布时间】:2016-05-17 20:33:53
【问题描述】:

我有一个 2 形式的 RDP 应用程序,可以正常运行(连接/工作)。第一个表单允许输入数据(服务器名称、用户、密码)并将这些数据传递给以全屏方式运行 RDP 控件的第二个表单。第二个窗体上没有其他控件。包含 RDP 控件的表单在设计上不包含 MIN/MAX/X 框,即应用程序是全屏的,没有边框。

我的问题是当用户注销 RDP 会话时(单击开始/注销),on_Disconnected 事件不会在持有 RDP 控件的表单中触发。除了从任务栏手动关闭之外,我留下了一个打开的表单,无法关闭它。我想运行此代码,但未生成 onDisconnected 事件:

'     <from the form containing the RDP (rdp2) control>

Private Sub rdp2_OnDisconnected(sender As Object, e As IMsTscAxEvents_OnDisconnectedEvent) Handles rdp2.OnDisconnected
         'closes RDP window after log out
    me.close
    frmStart.Show()
End Sub

我也尝试了 onConfirmClose 事件,结果相同。当然,如果我保留边框和 MIN/MAX/X,我可以手动关闭表单。
是否有其他事件或其他方法可以识别从会话中注销?我找不到适合这里的文档。谢谢!

【问题讨论】:

    标签: vb.net rdp


    【解决方案1】:

    同样的问题发生在我的路上。 我选择实现第 9 版的 TSC 控制,在我的案例中可以在 VS2015 中使用:

    Imports AxMSTSCLib
    Dim rdp As New AxMSTSCLib.AxMsRdpClient9NotSafeForScripting
    

    然后你可以注意到client9有更多的属性:

        Private Sub RDP_Disconnected(sender As Object, e As IMsTscAxEvents_OnDisconnectedEvent)
    
        If CType(sender, AxMsRdpClient9NotSafeForScripting).ExtendedDisconnectReason = ExtendedDisconnectReasonCode.exDiscReasonAPIInitiatedLogoff Or CType(sender, AxMsRdpClient9NotSafeForScripting).ExtendedDisconnectReason = ExtendedDisconnectReasonCode.exDiscReasonLogoffByUser Then
            CType(sender, AxMsRdpClient9NotSafeForScripting).Tag = "Logoff"
    
        End If
    end sub
    

    有用的一个:ExtendedDisconnectReason,你可以在断开连接的事件上查看它。

    BR1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2014-12-21
      • 2015-08-28
      • 2015-02-10
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多