JScript中是否有任何方法通过提供进程名来获取进程主窗口的句柄? Process.MainWindowHandle属性只能在JScript .NET中使用。 经典的JScript中有没有类似的东西?
我不知道这是否工作,只是尝试循环window.parent直到它未定义。
就像是 –
var mainWindow = window; while( mainWindow.parent ) { mainWindow = mainWindow.parent; }
你也有类似window.top东西总是返回你最上面的窗口。 但不知道这是否被所有的浏览器支持。
JScript和Windows脚本宿主没有这个功能,WMI也没有。
如果PowerShell是您的一个选项,那么您可以使用您提到的Process.MainWindowHandle属性:
(Get-Process notepad).MainWindowHandle
否则,您将需要查找或编写一个实用程序(COM对象,命令行工具等)来提供此功能,并从脚本中调用此工具。
Windows脚本宿主提供非常有限的UI自动化功能。 如果您知道窗口标题,则可以尝试使用AppActivate to和SendKeys方法来激活该窗口,并向其发送Alt + F4快捷方式。 你可以找到一个这个答案的例子。 (代码是在VBScript中,但它应该给你的想法。)但是,这种方法是不可靠的。
如果你真的不想杀死进程,最简单的解决方案是使用一些第三方UI自动化工具。 例如,你可以尝试免费的AutoIt工具 – 我认为它应该能够完成你所需要的。
编辑2:你有没有尝试录制关闭的窗口? 你应该得到这样的脚本:
Sys.Process("notepad").Window("Notepad","Untitled - Notepad").Close();
这不是你需要的吗?
对于原生的win32应用程序,不存在“主窗口”这样的事情。 一个进程可以根本没有窗口,或几个顶级的“主”窗口。
那么一旦我不得不为Outlook写一个加载项。 我的老板想要加载Outlook时出现一个闪屏。 但是,Outlook窗口过度飞溅。 经过大量的搜索,我发现FindWindow http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28FINDWINDOW%29%3bk%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4 .0%22%29%3bk%28DevLang-CSHARP%29&rd = true这是对它的帮助。 这个函数根据窗口标题和窗口类名找到窗口。 我p调用它并从C#中使用它。 如果你可以通过JScript使用这个函数,我认为它可以为你做这个工作。 (我用Spy ++查找lpClassName参数)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。