在所有窗口上方运行hta



我有一个HTML应用程序,我希望它位于所有窗口的顶部(也就是说,如果打开/切换到另一个窗口,我希望这个窗口覆盖它)。JavaScript解决方案在Windows 7/IE9模式下不起作用(不确定是哪个阻碍了它,也无法更改),VBScript解决方案似乎要么完全失败,要么依赖于外部组件。我也不能使用模态对话框,因为我需要它在所有其他窗口的顶部,而不仅仅是它的父窗口。

不要将此标记为的副本https://stackoverflow.com/questions/24539339/how-to-open-a-hta-window-on-top-of-all-other-windows因为这个问题(不幸的是仍然没有答案)指的是在其他窗口上方打开,而不是保持堆栈位置。

我尝试过的:

  • 这里列出了三条建议
  • 这里的JavaScript解决方案
  • 这里的小VBScript
  • 以上每一种可能都有十几种或更多微妙的变化

请记住,我无法下载额外的组件(没有autoit或nircmd)。它应该全部集成到一个文件中,最好是一个hta,但不是一个zip。

我的解决方案

只是从Teemu的解决方案中稍微调整了一下,主要是为了便于移植(以防万一)。

<script language="javascript">
    var locationstore = location.href
    [...]
    window.onload = function () {
        var shell = new ActiveXObject('WScript.Shell'),
            forceModal = function (e) {
                shell.Run(locationstore, 1, 0);
            };
        top.addEventListener('blur', forceModal, false);
        window.onbeforeunload = function () {
            window.removeEventListener('blur', forceModal, false);
        };
    };
</script>

这里有一个邪恶的片段。它并不完美,但也许你可以进一步发展。

window.onload = function () {
    var shell = new ActiveXObject('WScript.Shell'),
        forceModal = function (e) {
            shell.Run('absolute_path_to_hta', 1, 0);
        };
    top.addEventListener('blur', forceModal, false);
    window.onbeforeunload = function () {
        window.removeEventListener('blur', forceModal, false);
    };
};

警告:测试此代码段时,HTA必须以单实例模式运行。

<script type='text/vbscript'> 
window.setInterval "SetToFocus()", 100
        Function SetToFocus()
        window.focus()
        set objShell = CreateObject("shell.application")
        objShell.MinimizeAll
        End Function
</script>

这个婴儿会把其他窗户藏起来,让自己站在上面。

<script type=text/vbscript">
    set objAPP=createobject("Shell.application") 
    Do
    wscript.sleep 500
    objAPP.AppActivate"Your Window Name"
    Loop
</script>

相关内容

  • 没有找到相关文章

最新更新