如何最小化窗口?
我正在制作HTA应用程序,我想用我的自定义替换窗口标题栏。 我已经通过HTA的“caption = no”选项禁用它并放置了我自己的最小化/最大化/关闭按钮。
我找到了两种最小化窗口的方法:
所以我可以使用WScript.Shell的SendKeys方法将这个快捷方式发送到窗口。
WsShell = new ActiveXObject("WScript.Shell")
WsShell.SendKeys("% n")
但是第一个不能使用,因为没有标题栏,第二个因为WinKey不能与SendKeys一起使用。
我找到了Shell.Application的MinimizeAll()方法,但它一个人。
还有其他方法可以最小化窗口吗?可能是另一个activeX对象或快捷方式?
答案 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。