1

Тема: HTA: Поверх всех окон на HTA

Сделал чтоб окно было поверх всех остальных с помощью придания окну фокуса, но это не правильно, так как есть другие окна, если они станут поверх моего то они все будут не активны и будут закрывать мое, есть ли другие методы например активировать окно а не задавать ему фокус, и при свёртывании окна, оно обратно делает Resume


<html>
   <head>
 
     <META Http-equiv="MSThemeCompatible" content="Yes">
     <Title>Example</Title>
 
     <script Language="JScript">
       document.bgColor="#ECE9D8"
       window.resizeTo(400, 300)
       window.moveTo(window.screen.width / 2 - 200, window.screen.height / 2 - 150)
     </script>
 
     <HTA:APPLICATION ID="oHTA"
        APPLICATIONNAME="Window" 
        BORDER="Thick"
        BORDERSTYLE="Normal"
        CAPTION="Yes"
        COMMANDLINE=""
        CONTEXTMENU="No"
        ICON="Explorer.exe"
        INNERBORDER="No"
        MAXIMIZEBUTTON="No"
        MINIMIZEBUTTON="Yes"
        NAVIGABLE="Yes"
        SCROLL="No"
        SCROLLFLAT="No"
        SELECTION="Yes"
        SHOWINTASKBAR="No"
        SINGLEINSTANCE="Yes"
        SYSMENU="Yes"
        VERSION="1.0"
        WINDOWSTATE="Normal"
      />
   </head>

   <script Language="VBScript">
      Sub Message(Title, Text)
         MsgBox Text, 64, Title
      End Sub
   </script>

   <script Language="JScript">
      setInterval("window.focus()", 1);
   </script>
   
   <body>
      <input id=1 type="button" value="Кнопка" style="position:absolute; left:30px; top:40px; width:80px; height:25px" OnClick="Message('Example', 'Hello world')">
   </body>

</html>

2

Re: HTA: Поверх всех окон на HTA

SergeyA пишет:

Сделал чтоб окно было поверх всех остальных с помощью придания окну фокуса, но это не правильно, так как есть другие окна, если они станут поверх моего то они все будут не активны и будут закрывать мое, есть ли другие методы например активировать окно а не задавать ему фокус, и при свёртывании окна, оно обратно делает Resume

Не понятно, о чем Вы говорите. Активное окно всегда одно, остальные неактивны. Ваше hta-приложение перекрывало другие приложения только будучи активным и никогда не меняло свой фокус при переключении между приложениями. То есть при переключении на другие приложения никогда не было always on top. Я единственный раз наблюдал, когда оно сделало себя активным - при его минимизации: оно свернулось и тут же активизировалось.

( 2 * b ) || ! ( 2 * b )

3

Re: HTA: Поверх всех окон на HTA

window.onblur=function(){new ActiveXObject('WScript.Shell').appActivate(document.title);window.focus();}

?

4 (изменено: SergeyA, 2012-02-19 23:04:26)

Re: HTA: Поверх всех окон на HTA

Не понятно, о чем Вы говорите. Активное окно всегда одно

Нет, не всегда, точнее Вы имели ввиду окно со стилем On Top?!, у меня например TaskMgr поверх всех окон и даже поверх моего, при клике на TaskMgr он становится не активным, так как фокус уходит на моё окно, а моё окно не может встать на передний план, потому что TaskMgr по верх моего окна

Serge Yolkin, я ни в hta, ни в vbs, ни в js не разбираюсь вообще, вот решил сегодня и завтра выделить дни для изучения, вроде не сложно но и не легко, я не совсем пойму как работает Ваш пример, вставил так:


<script Language="JScript">
      window.onblur=function(){new ActiveXObject('WScript.Shell').appActivate(document.title);window.focus();}
</script>

Но естественно ни чего не происходит, так как надо контролировать в цикле

Я наверное не так выразился, хотел сказать "Как сделать своё окно поверх всех остальных стандартными средствами?"