do not touch, do not close
Уважаемые, подскажите пожалуйста, есть ли возможность запретить закрытие командной строки. Что бы кнопка закрытия была не активна при выполнении пакетного файла?
|
Примерный неработающий вариант. Приведён здесь лишь, как иллюстрация подхода, который возможно, вам пригодится.
Код:
@Echo Off
:: Получаем PID своего процесса
Call :GetPID
:: Убираем кнопки закрытия окна
nircmdc win -style process /%MyPID% 0x000000000
:: Выполняем полезную нагрузку
Echo blablabla
Echo ~~~
Echo blablabla
:: Возвращаем кнопки закрытия окна
nircmdc win +style process /%MyPID% 0x000000000
Pause&Exit
:GetPID
:: Устанавливаем случайный уникальный заголовок окна
Set Title=%Random%%Random%
Title %Title%
:: Ищем процесс по заголовку окна и получаем PID
For /F "tokens=2" %%A In ('TaskList /FI "windowtitle EQ %Title%"^|Find "."') Do (Set MyPID=%%A)
:: Заменяем случайный заголовое на имя скрипта
Title %~nx0
Exit /B
Проблема в том, что я не знаю нужное значение бита style\exstyle, которое позволит убрать кнопки закрытия. И то, возможно ли это вообще с окном командной строки. Но надеюсь, это даст вам ключ к решению данной проблемы.
В скрипте используется внешняя утилита nircmd.
|
7ka, смысл сего каков?
Что помешает пользователю использовать прерывание по Ctrl-C или завершение процесса окна консоли?
|
Iska, спасибо, будет время, завтра попробую
Цитата:
Что помешает пользователю использовать прерывание по Ctrl-C или завершение процесса окна консоли? »
|
не все ёгурты пользователи одинаково полезны грамотны)))
|
Iska, не удалось получить нужный результат, печалька((
... я почитал справку nircmd, подчеркнул для себя несколько полезных параметров, за это премного благодарен!
Буду копать дальше, может найдется решение, отключения кнопки [x] в окне пакетного файла
|
Работающий на win7:
Код:
@Echo Off
:: Кодировка файла Кириллица DOS (866)
:: Получаем PID своего процесса
Call :GetPID
:: Убираем кнопки закрытия окна
nircmdc win -style process /%MyPID% 0x00C00000
:: Выполняем полезную нагрузку
Echo %Title%
Echo %MyPID%
Echo blablabla
Pause
:: Возвращаем кнопки закрытия окна
nircmdc win +style process /%MyPID% 0x00C00000
Pause&Exit
:GetPID
:: Устанавливаем случайный уникальный заголовок окна
Set Title=%Random%%Random%
Title %Title%
:: Ищем процесс по заголовку окна и получаем PID
For /F "tokens=2" %%A In ('TaskList /FI "windowtitle EQ Администратор: %Title%"^|Find "."') Do (Set MyPID=%%A)
:: Заменяем случайный заголовое на имя скрипта
Title %~nx0
Exit /B

|
gora
кнопка [x] и все остальное осталось, а вот перетащить окно не получается
|
Цитата:
Цитата 7ka
и все остальное осталось »
|
На какой системе?
Цитата:
Цитата 7ka
перетащить окно не получается »
|
Ищите другой style или exstyle, а может потребуется их комбинация... :dont-know
|
win7hb x64
благо машин куча рядом, эта ось уже давно стоит, может что с ней не так, сейчас попробую на другой, отпишусь...
Так и есть! проверил на другой машине с win7starter все работает, а под win8 то уже не пойдет данный код?
|
Сделать окно неактивным позволяет добавление стиля 0x08000000.
Код:
nircmdc win +style process /%MyPID% 0x08000000
Кнопки будут видны, но они, будут неактивны, нажать будет нельзя, но и окно перетащить неудастся.
|
Цитата:
Цитата gora
Сделать окно неактивным позволяет добавление стиля 0x08000000.
Код:
nircmdc win +style process /%MyPID% 0x08000000
Кнопки будут видны, но они, будут неактивны, нажать будет нельзя, но и окно перетащить неудастся. »
|
Благодарю, это вариант мне больше подошел!
|
Время: 04:03.
© OSzone.net 2001-