Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Запретить закрытие окна (http://forum.oszone.net/showthread.php?t=341423)

lox-ness 17-07-2019 10:52 2880194

Запретить закрытие окна
 
Добрый День!
Цель - обязать пользователя сделать выбор на перезагрузку ПК и не дать ему возможности отказаться (любым способом)в данном исполнении у пользователя есть возможность закрыть окно из панели задач
Можно как-то запретить закрывать окно из Панели задач или может будут другие предложения. Спасибо за ранее
Код:

<html id="appHTML">
    <head>
        <meta charset="windows-1251">
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
        <meta http-equiv="Content-Language" content="ru">
        <title>Выбор времени ожидания</title>
        <hta:Application
            Icon = "MyIco.ico"
            Id="oHTA"
            ApplicationName="Выбор времени перезагрузки"
            Border="normal"
            BorderStyle="normal"
            Caption="yes"
            ContextMenu="no"
            InnerBorder="yes"
            MaximizeButton="no"
            MinimizeButton="no"
            Navigable="no"
            Scroll="auto"
            ScrollFlat="no"
            Selection="no"
            ShowInTaskbar="yes"
            SingleInstance="yes"
            SysMenu="no"
            Version="0.2"
            WindowState="normal"
        />
        <style>
        body {background: #DDD;}
        select{width:100px;}
        .setbutton {margin-top: 2px;width:3px;}
    .edit {border:1px solid #9E9E9E;}
        .disabled{border:1px solid #9E9E9E;background: #EEE;}
</style>
       
        <script language="VBScript">
                      Option Explicit
                  Sub SetOk_click()
                Dim VMBuildStep
           
                      VMBuildStep = document.getElementById("Wait").value
            Select Case VMBuildStep
            Case "30"
            createobject("WScript.Shell").run "shutdown.exe /r /t 1800 /f"
            Case "60"
            createobject("WScript.Shell").run "shutdown.exe /r /t 3600 /f"
            Case "120"
            createobject("WScript.Shell").run "shutdown.exe /r /t 7200 /f"
                                    End Select
                        Window.Close()
                 
                                  End Sub
       
Function Document_onKeyDown() ' Запретить нажимать Alt+F4
            Dim alt
    alt = window.event.altKey
    Select Case window.event.keyCode
        Case 27,116
            window.event.keyCode = 0
            window.event.cancelBubble = true
            Document_onKeyDown = False
        Case 115
            If alt Then
                window.event.keyCode = 0
                window.event.cancelBubble = true
                Document_onKeyDown = False
            End If
        Case Else
            Document_onKeyDown = True
    End Select
          End Function

Sub Window_Onload ()
  Dim idTimer
        idTimer = window.setTimeout("reset", 10000, "VBScript")
    End Sub
    Sub reset ()
            createobject("WScript.Shell").run "shutdown.exe /r /t 3600 /f"
            Window.Close()
      End Sub
    </script>
    </head>
    <body>
                  <span id="lblChoice">Необходимо выбрать время перезагрузки:
                    <select name="Wait" id="Wait" size="1">
                    <option value="30" selected>30 минут
                    <option value="60">1 часа
                    <option value="120">2 часа
                                        </select> </span>
                                        <input type="Button" name="OK" value="OK" onclick="SetOk_click">                     
                            </ span>
            </body>
        <SCRIPT type="text/vbscript" language="vbscript">
      ' Do the window sizing early so user doens't see the window move and resize
      Window.resizeTo 500, 200

    </SCRIPT>
 
  </html>


greg zakharov 17-07-2019 12:40 2880212

Цитата:

Цитата lox-ness
у пользователя есть возможность закрыть окно из панели задач

Даже если вы присвоите ShowInTaskbar значение false, у пользователя будет возможность прихлопнуть процесс через диспетчер процессов или прямо в консоли (wmic или taskkill), достаточно отыскать среди прочего mshta.exe; если нужно принудить выполнить пользователя определенное действие, то:
1) растянуть форму на весь экран, присвоив ей атрибут "поверх всех окон"
2) отключить на время демонстрации формы выбора вариантов действий клавиатуру (блокировка Alt+Tab)
3) обработать результат клика мыши
Первые два пункта реализуются посредством простенького шеллкода (тема выходит за рамки тематики форума), последнее стандартно и не требует специфических телодвижений.

Busla 17-07-2019 13:04 2880215

Цитата:

Цитата lox-ness
Цель - обязать пользователя сделать выбор на перезагрузку ПК »

Цель у вас - перезагрузить компьютер.
Вот первым шагом и назначайте перезагрузку. А пользователя просто проинформируйте и дайте возможность передвинуть время.

lox-ness 17-07-2019 14:21 2880232

Пользователь может закрыть окно не сделав выбор, а нам нужно чтоб деваться ему было не куда и жать кнопку.
Добавить вариант
Цитата:

"поверх всех окон"
вполне достойный, и отключение через
Цитата:

ShowInTaskbar значение false
так же
В скрипте заложено время для принятия решения, правда пока маленькое совсем, но это порешаем
Цитата:

у пользователя будет возможность прихлопнуть процесс через диспетчер процессов или прямо в консоли (wmic или taskkill)
таких сообразительных думаю не много
Вообщем спасибо Всем за советы. Будем пробовать

Iska 17-07-2019 17:22 2880286

Цитата:

Цитата lox-ness
Пользователь может закрыть окно не сделав выбор, а нам нужно чтоб деваться ему было не куда и жать кнопку. »

Ещё раз:
Цитата:

Цитата Busla
Цель у вас - перезагрузить компьютер.
Вот первым шагом и назначайте перезагрузку. А пользователя просто проинформируйте… »

lox-ness, а зачем нужно самостоятельное назначение времени отсрочки для перезагрузки?

lox-ness 18-07-2019 06:31 2880355

Цитата:

lox-ness, а зачем нужно самостоятельное назначение времени отсрочки для перезагрузки?
У нас большое количество пользователей и нельзя просто взять его ПК и перезагрузить, когда нам хочется, поэтому предлагаем отсрочку этого момента на его усмотрение, но
при этом нужно не позволить ему отказаться совсем от перезагрузки.


Время: 12:30.

Время: 12:30.
© OSzone.net 2001-