Войти

Показать полную графическую версию : Запретить закрытие окна


lox-ness
17-07-2019, 10:52
Добрый День!
Цель - обязать пользователя сделать выбор на перезагрузку ПК и не дать ему возможности отказаться (любым способом)в данном исполнении у пользователя есть возможность закрыть окно из панели задач
Можно как-то запретить закрывать окно из Панели задач или может будут другие предложения. Спасибо за ранее
<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
у пользователя есть возможность закрыть окно из панели задачДаже если вы присвоите ShowInTaskbar значение false, у пользователя будет возможность прихлопнуть процесс через диспетчер процессов или прямо в консоли (wmic или taskkill), достаточно отыскать среди прочего mshta.exe; если нужно принудить выполнить пользователя определенное действие, то:
1) растянуть форму на весь экран, присвоив ей атрибут "поверх всех окон"
2) отключить на время демонстрации формы выбора вариантов действий клавиатуру (блокировка Alt+Tab)
3) обработать результат клика мыши
Первые два пункта реализуются посредством простенького шеллкода (тема выходит за рамки тематики форума), последнее стандартно и не требует специфических телодвижений.

Busla
17-07-2019, 13:04
Цель - обязать пользователя сделать выбор на перезагрузку ПК »
Цель у вас - перезагрузить компьютер.
Вот первым шагом и назначайте перезагрузку. А пользователя просто проинформируйте и дайте возможность передвинуть время.

lox-ness
17-07-2019, 14:21
Пользователь может закрыть окно не сделав выбор, а нам нужно чтоб деваться ему было не куда и жать кнопку.
Добавить вариант "поверх всех окон" вполне достойный, и отключение через ShowInTaskbar значение false так же
В скрипте заложено время для принятия решения, правда пока маленькое совсем, но это порешаем
у пользователя будет возможность прихлопнуть процесс через диспетчер процессов или прямо в консоли (wmic или taskkill) таких сообразительных думаю не много
Вообщем спасибо Всем за советы. Будем пробовать

Iska
17-07-2019, 17:22
Пользователь может закрыть окно не сделав выбор, а нам нужно чтоб деваться ему было не куда и жать кнопку. »
Ещё раз:
Цель у вас - перезагрузить компьютер.
Вот первым шагом и назначайте перезагрузку. А пользователя просто проинформируйте… »
lox-ness, а зачем нужно самостоятельное назначение времени отсрочки для перезагрузки?

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




© OSzone.net 2001-2012