如何最小化窗口?

时间:2017-02-25 07:50:34

标签: hta windows-shell wsh windows-scripting

如何最小化窗口?

我正在制作HTA应用程序,我想用我的自定义替换窗口标题栏。 我已经通过HTA的“caption = no”选项禁用它并放置了我自己的最小化/最大化/关闭按钮。

我找到了两种最小化窗口的方法:

  • 快捷键ALT + SPACE + n
  • 快捷方式WinKey + ArrowDown

所以我可以使用WScript.Shell的SendKeys方法将这个快捷方式发送到窗口。

WsShell = new ActiveXObject("WScript.Shell")
WsShell.SendKeys("% n")

但是第一个不能使用,因为没有标题栏,第二个因为WinKey不能与SendKeys一起使用。

我找到了Shell.Application的MinimizeAll()方法,但它一个人。

还有其他方法可以最小化窗口吗?可能是另一个activeX对象或快捷方式?

3 个答案:

答案 0 :(得分:1)

我想出了同样的问题。这是对我有用的解决方案:

放在< head >部分:

<object id="HHCtrlMinimizeWindowObject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
    <param name="command" value="minimize" />
</object>

<script type="text/javascript">
function _jsMinWin( ) {
    try {
        HHCtrlMinimizeWindowObject.Click( );
    }
    catch ( err ) {
        alert( err.message );
    }
}
</script>

然后在&lt; body &gt;部分类似:

<input type="button" value="Minimize Window" name="MinimizeWindow" id="MinimizeWindow" onclick="javascript:_jsMinWin();" />

答案 1 :(得分:0)

如果Microsoft scripting guy不知道如何操作,那么可能无法实现。

即使您可以使用ActiveXObject("shell.application").Windows.Item(x)并且获得自己的InternetExplorer对象,但似乎没有办法以编程方式最小化您自己。

我唯一的建议是在每个与窗口相关的对象上使用类似for (var k in obj) WScript.Echo(k)的东西,你可以亲自动手并寻找未记录的方法/属性......

答案 2 :(得分:-1)

好吧,您可以使用Microsoft Word Application对象的Tasks属性。首先通过将ProgID“Word.Application”传递给new ActiveXObject命令来实例化Microsoft Word Application对象:

var word = new ActiveXObject("Word.Application");

然后,在Tasks集合中找到您的HTA窗口:

var win = word.Tasks.Item(document.title);

如您所见,您应该将HTA的标题传递给Item方法以找到HTA的窗口。但是有一个问题......如果另一个不需要的窗口与你的HTA具有相同的标题怎么办?这导致窗口混乱。若要解决此问题,我建议您在任务集合中找到HTA窗口之前为HTA设置一个特殊且唯一的标题。这使事情变得复杂:

document.title = "window" + Math.random();
win = word.Tasks.Item(document.title);
document.title = "My HTA";

请注意,在找到HTA窗口后,您应该设置自己想要的标题。另请注意,此代码应在window.onload事件发生时运行。因为那是HTA生成窗口的时候。

然后,只要您需要最小化HTA窗口,请将WindowState对象的win属性设置为2

win.WindowState = 2;

编辑:另一方面,这种方式有两个缺点:
1.只要用户的计算机上安装了Microsoft Office Word,它就能正常运行 2.实例化Microsoft Word Application对象需要几秒钟,因为此对象在进程外服务器中运行。所以这可能会减慢您的HTA。