我有一个2形式的RDP应用程序,可以正常运行(连接/工作)。第一种形式允许输入数据(服务器名称,用户,密码)并将此数据传递给以全屏运行RDP控件的第二种形式。第二种形式没有其他控件。根据设计,包含RDP控件的表单不包含MIN / MAX / X框,即应用程序是全屏,没有边框。
我的问题是当用户注销RDP会话(单击START / Log off)时,不会以保存RDP控件的形式触发on_Disconnected事件。我留下了一个打开的表单,无法关闭它,除了从任务栏手动。我想运行此代码,但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,我可以手动关闭表格 是否有其他事件或其他方法来识别会话中的注销?我无法找到适合这里的文档。谢谢!
答案 0 :(得分:0)
同样的问题在我的路上发生了。 我选择实现TSC控件的第9版,在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