gpt4 book ai didi

internet-explorer - 关闭由 WScript.CreateObject 创建的 IE 实例

转载 作者:行者123 更新时间:2023-12-04 05:49:52 25 4
gpt4 key购买 nike

我正在寻找一种从通过运行创建的对象中检索进程 ID 的方法:

Set ie = WScript.CreateObject("InternetExplorer.Application", "ie_")

我的问题是有时我看到 iexplorer运行后进程保持打开状态且未关闭:
ie.stop
ie.Quit

我找到了一些解决方法,比如寻找最新的 iexplorer进程或查看进程名称,但这对我不利,因为我有多个 Internet Explorer 实例由不同的进程并行打开,并且可能同时打开。

这是不好的:
Set colProcessList = objWMIService.ExecQuery _ 
("Select * from Win32_Process Where " _
& "Name = '"& sProcessName & "'")

我看到了 this solution这可能有效,但我不知道如何为 Internet Explorer 实现它。

最佳答案

在不调用 powershell 命令或使用 com 包装器的情况下,您可能希望通过其命令行过滤进程。从 dcom 启动创建的 iexplorer.exe 进程具有类似 -Embedding 的命令行。 .关于我的意思的示例查询。

Select * from Win32_Process Where Name = 'iexplore.exe' And CommandLine Like '%-Embedding'



是的,我听说过,这将返回所有嵌入的实例,因此如果有多个实例,它可能没有用。

IE 对象实例具有返回 mainwindowhandle 的属性: HWND .

使用 HWND 可以做什么来终止更可靠:

从 Powershell 运行命令:
Set WshShell = WScript.CreateObject("WScript.Shell")
strCommand = "powershell -Command ""Get-Process | Where-Object {$_.MainWindowHandle -eq "& IE.Hwnd &"} | kill"""
WshShell.Run strCommand, vbHide, True

使用/编写一个封装 Windows API 的组件(仅限 32 位): http://www.codeproject.com/Articles/16558/DestroyWindow-in-VBScript
Set obj = CreateObject("APIWrapperCOM.APIWrapper")
obj.KillWindow IE.Hwnd

希望它有帮助。

关于internet-explorer - 关闭由 WScript.CreateObject 创建的 IE 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com