我们正尝试使用以下方式启动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 如何返回会话对象。
答案 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之类的事件。