启动Citrix Via VBscript时不返回ICA会话对象

时间:2014-11-30 12:52:14

标签: session citrix

我们正尝试使用以下方式启动Citrix桌面实例:

设置ICO = CreateObject(“Citrix.ICAClient”)ICO.Address = Addr ICo.TransportDriver =“TCP / IP”ICO.InitialProgram =“#testing-”ICo.WinstationDriver =“ICA 3.0”ICO.Username =“ tester“ICo.Domain =”ASIA“ICO.SetProp”ClearPassword“,”hello“ICO.SetProp”Launch“,”TRUE“ICO.Connect ICO.Session.Mouse.SendMouseDown 1,0,400,400'waitfor 30秒ICO.Logoff < / p>

使用会话对象ICO.Session.Mouse.SendMouseDown 1,0,400,400

时会产生错误(需要对象:'ICO.Session')

显然它不会返回会话对象。

启用模拟: [HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Citrix \ ICA Client \ CCM] “AllowSimulationAPI”= DWORD:00000001 如何返回会话对象。

2 个答案:

答案 0 :(得分:0)

使用EnumerateCCMSessions获取会话对象,并使用GetEnumNameCount迭代会话对象以获取会话名称:

Set icaClient = CreateObject("Citrix.ICAClient")
sessionHandle = icaClient.EnumerateCCMSessions()
numSessions = icaClient.GetEnumNameCount(sessionHandle)

For ct = 0 To numSessions - 1

sessionID = icaClient.GetEnumNameByIndex(sessionHandle, ct)
icaClient.StartMonitoringCCMSession sessionID, True

'SessionServer = 0,
'SessionUsername = 1
'SessionDomain = 2
sessionInfo = icaClient.GetSessionString(1)
If lcase(sessionInfo) <> lcase(strWindowsUser) Then
    icaClient.Disconnect()
End If

icaClient.StopMonitoringCCMSession sessionID 

Next

icaClient.CloseEnumHandle sessionHandle
  

一个。 EnumerateCCMSessions:枚举计算机上运行的所有会话的API,返回会话ID列表。

     

B中。 StartMonitoringCCMSession:用于启动实时监控的API。您必须传递要监视的会话的会话ID。完成后,就可以使用其他ICA Simulation API。

     

℃。 StopMonitoringCCMSession:用于停止监控会话的API。完成监视后,应调用此API。这样做可以清理ICO使用的任何资源。

<强>参考

答案 1 :(得分:0)

您需要等待会话创建。尚未建立连接会话之后。要么在调用ICO.Connect和SendMouse之间对超时设置进行硬编码,要么等待诸如onConnect或onLogon之类的事件。