Я даже не знаю, с чего начать с моего вопроса, я пробовал сотню вещей и искал в Интернете часами, но не нашел ничего полезный. (Я открыт для каждого подвоха.)Активация (вывод на передний план) определенного окна с vbscript
Вот моя проблема:
У меня есть .hta-файл с ListBox, который выглядит следующим образом:
В нем перечислены все сессий/модификаций моего 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 Logon». Одно из моих открытых окон также имеет имя «SAP Logon», все остальные имеют одно и то же имя: «SAP Easy Access».
Единственный способ можно увидеть идентификаторы соединения (Имя_сервера) и идентификаторы сеанса осуществляется посредством извлечения их с VBScript. (см. выше)
Есть ли способ сделать это? Только обходные я мог думать после попытки тысячи решений являются эти два:
чрезвычайно уродливые обходной путь:
If sessionID = sess.ID Then
Set objShell = CreateObject("shell.application")
objShell.MinimizeAll
sess.findById("wnd[0]").maximize
End If
Это сводит к минимуму все окна затем максимизирует выбранное окно SAP. К сожалению, мой HTA-GUI также сведен к минимуму, что своего рода отстой.
Вторая идея:
Какие-то образом добраться до этих интерактивных рюшечек по ярлыку и положить, что в моем сценарии или каким-либо другой уродливо.
Под рукой вы должны сделать это:
Нажмите на эту маленькую стрелку, правый клик на иконку и затем LeftClick по имени.
Есть ли способ автоматизировать этот процесс? Это сводит меня с ума.
Надеюсь, кто-то может мне помочь, это было бы НАСТОЯТЕЛЬНО оценено.
PS: Я сижу на машине с ограниченными правами, и поэтому я не могу справиться с этим с помощью решений Windows API-ish.
EDIT относительно комментариев:
Это не представляется возможным:
- изменить записи реестра
- создать COM-объекты
- работу с чем-нибудь еще, кроме VBScript
В чем именно причина, почему этот вопрос был приостановлен? O.o –
Возможно, потому что вы еще не приняли [их ответ] (http://stackoverflow.com/a/35206506/692942), лично я не вижу ничего плохого в этом вопросе. Я видел гораздо хуже. – Lankymart
Зачем мне это принимать ... Что бы ни случилось. Если вы видели гораздо хуже, вы, вероятно, видели гораздо лучше. ;) Что я могу изменить, чтобы сделать его более понятным? –