【发布时间】:2016-02-04 15:54:56
【问题描述】:
我什至不知道从哪里开始我的问题,我尝试了一百件事并用谷歌搜索了几个小时,但没有发现 任何东西 有用。 (我对每一个肮脏的把戏都持开放态度。)
这是我的问题:
我有一个带有如下列表框的 .hta 文件:
它列出了我正在运行的 SAP Gui 的所有会话/模式。
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
If application.Connections.Count > 0 Then
Set connection = application.Children(0)
If connection.Sessions.Count > 0 Then
Set session = connection.Children(0)
End If
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
Set optGroup = Document.createElement("OPTGROUP")
optGroup.label = "Server"
'count all connected servers
ConnectionCount = application.Connections.Count
If ConnectionCount > 0 Then
Sessionlist.appendChild(optGroup)
Else
optGroup.label = "No connection here."
End If
'count all sessions per server
If ConnectionCount > 0 Then
For Each conn in application.Connections
'Text output connections and sessions
SessionCount = conn.Sessions.Count
whatIsIt = conn.Description
ConnectionFeld.innerhtml = ConnectionFeld.innerhtml & " <br> " & SessionCount & " Sessions auf " & whatIsIt
'fill listbox with all connections
Set objOption = nothing
Set optGroup = Document.createElement("OPTGROUP")
optGroup.label = conn.Description
Sessionlist.appendChild(optGroup)
i = 0
'fill listbox with all sessions
For Each sess In conn.Sessions
i = i + 1
Set objOption = Document.createElement("OPTION")
objOption.Text = "Session " & i & ": " & sess.ID
objOption.Value = sess.ID
SessionList.options.add(objOption)
Next
Next
Else
Exit Sub
End If
我的目标:当我双击该列表中的一个条目时,我的 SAP Gui 的选定实例应该会出现在前台/被激活。
不幸的是,我的任务管理器只列出了一项任务,那就是“SAP 登录”。我打开的一个窗口也具有名称“SAP Logon”,所有其他窗口都具有相同的名称:“SAP Easy Access”。
我可以看到连接 ID(服务器名称)和会话 ID 的唯一方法是使用 vbscript 提取它们。 (见上文)
有没有办法做到这一点?在尝试了一千种解决方案后,我能想到的唯一解决方法是以下两种:
非常难看的解决方法:
If sessionID = sess.ID Then
Set objShell = CreateObject("shell.application")
objShell.MinimizeAll
sess.findById("wnd[0]").maximize
End If
它最小化所有窗口,然后最大化选定的 SAP 窗口。不幸的是,我的 HTA-GUI 也被最小化了,这有点糟糕。
第二个想法:
以某种方式通过快捷方式访问这些可点击的东西并将其放入我的脚本或其他一些丑陋的方式中。
您必须手动操作:
单击那个小箭头,右键单击图标,然后左键单击名称。
有什么办法可以自动完成吗?快把我逼疯了。
希望有人能帮助我,不胜感激。
PS:我坐在一台权限受限的机器上,所以我可能无法使用 Windows API-ish 解决方案来解决这个问题。
关于 cmets 的编辑:
这是不可能的:
- 更改注册表项
- 创建 COM 对象
- 使用 VBScript 以外的任何东西
【问题讨论】:
-
究竟是什么原因,为什么这个问题被否决了? O.o
-
可能是因为您还没有接受their answer,我个人认为这个问题没有任何问题。我见过更糟糕的情况。
-
我为什么要接受这些……无论如何。如果您看到的情况更糟,那么您可能看到的情况要好得多。 ;) 我可以进行哪些更改以使其更易于理解?
-
你错过了理解我我的意思是这个问题没有任何问题(就值得一票否决而言)。
-
是的,我明白了。 ;) 只是我坐在那个推 F5 的帖子前面(比喻)。所以我有足够的时间让这篇文章更清楚。