windows – 使用vbscript激活(带到前台)特定窗口
我甚至不确定从哪里开始我的问题,我尝试了几百个东西并用谷歌搜索了几个小时但没有找到任何有用的东西. (我对每一个肮脏的把戏持开放态度.)
这是我的问题: 我有一个带有列表框的.hta文件,如下所示: 它列出了我的SAP Gui运行的所有会话/ modi. 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实例应该到达前台/被激活. 不幸的是,我的taskmanager只列出了一个任务,即“SAP Logon”.我打开的一个窗口也有“SAP Logon”的名称,其他所有窗口都有相同的名称:“SAP Easy Access”. 我能看到连接ID(servername)和会话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解决方案解决这个问题. 关于评论的编辑: 这不可能: >更改注册表项 解决方法
来自帮助.
激活应用程序窗口. object.AppActivate title 宾语 标题 我不知道您对该窗口的信息访问权限.某些COM对象具有HWnd属性.这篇文章将向您介绍如何将hwnd转换为上面要使用的ProcessID. How to find the window Title of Active(foreground) window using Window Script Host 这显示了如何将进程的命令行转换为ProcessID.要查看可用的属性和方法,请使用命令行工具wmic(wmic process get /?和wmic process call /?) Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!.rootcimv2") Set colItems = objWMIService.ExecQuery("Select * From Win32_Process") For Each objItem in colItems msgbox objItem.ProcessID & " " & objItem.CommandLine Next (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Windows上安装PyGI(Python Gobject Introspection)?
- 在Windows Server 2008上安装Docker
- active-directory – 内置的“提供远程协助”因权限无法正常
- 如何在Windows上的C和PHP之间进行通信?
- 从.NET DLL – app.config问题消耗webservice
- windows-server-2008 – 如何在具有多个VM的Hyper-V服务器上
- windows – Active Directory – 具有相同名称的林之间的林
- Windows Phone 7 – 是否有标准在WP7应用程序中存储用户名和
- Windows – 使用向上箭头访问PowerShell历史记录
- windows-phone-8.1 – 从商店安装我自己的应用程序时的错误
- windows-server-2008-r2 – Windows Server 2008
- .net – 类库(.dll)应该从哪里读取它的配置?
- libintl3和libiconv2 for gnu make在windows上,需
- Windows工作流程
- MariaDB Windows 安装
- windows-8 – 如何检测表面键盘是否已连接?
- windows-server-2008 – 在Windows Server 2008
- windows-server-2003 – 活动目录GPO是否可以应用
- windows – 如何在Delphi中允许拖动特定控件的文
- 在Windows(Vista)中将文件重命名为空文件名