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

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

7ka 12-03-2013 15:57 2109404

do not touch, do not close
 
Уважаемые, подскажите пожалуйста, есть ли возможность запретить закрытие командной строки. Что бы кнопка закрытия была не активна при выполнении пакетного файла?

Anonymоus 12-03-2013 17:54 2109511

Примерный неработающий вариант. Приведён здесь лишь, как иллюстрация подхода, который возможно, вам пригодится.

Код:

@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.

Iska 12-03-2013 19:11 2109561

7ka, смысл сего каков?

Что помешает пользователю использовать прерывание по Ctrl-C или завершение процесса окна консоли?

7ka 12-03-2013 19:27 2109578

Iska, спасибо, будет время, завтра попробую
Цитата:

Что помешает пользователю использовать прерывание по Ctrl-C или завершение процесса окна консоли? »
не все ёгурты пользователи одинаково полезны грамотны)))

7ka 13-03-2013 09:30 2110031

Iska, не удалось получить нужный результат, печалька((
... я почитал справку nircmd, подчеркнул для себя несколько полезных параметров, за это премного благодарен!
Буду копать дальше, может найдется решение, отключения кнопки [x] в окне пакетного файла

gora 13-03-2013 10:51 2110075

Цитата:

Цитата Anonymоus
неработающий вариант »

Работающий на 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


7ka 13-03-2013 11:19 2110097

gora



кнопка [x] и все остальное осталось, а вот перетащить окно не получается

gora 13-03-2013 11:22 2110100

Цитата:

Цитата 7ka
и все остальное осталось »

На какой системе?
Цитата:

Цитата gora
Работающий на win7 »

Цитата:

Цитата 7ka
перетащить окно не получается »

Ищите другой style или exstyle, а может потребуется их комбинация... :dont-know

7ka 13-03-2013 12:26 2110138

Цитата:

Цитата gora
На какой системе? »

win7hb x64
благо машин куча рядом, эта ось уже давно стоит, может что с ней не так, сейчас попробую на другой, отпишусь...

Так и есть! проверил на другой машине с win7starter все работает, а под win8 то уже не пойдет данный код?

gora 13-03-2013 12:28 2110139

Сделать окно неактивным позволяет добавление стиля 0x08000000.
Код:

nircmdc win +style process /%MyPID% 0x08000000
Кнопки будут видны, но они, будут неактивны, нажать будет нельзя, но и окно перетащить неудастся.

7ka 13-03-2013 13:01 2110170

Цитата:

Цитата gora
Сделать окно неактивным позволяет добавление стиля 0x08000000.
Код:
nircmdc win +style process /%MyPID% 0x08000000
Кнопки будут видны, но они, будут неактивны, нажать будет нельзя, но и окно перетащить неудастся. »

Благодарю, это вариант мне больше подошел!


Время: 04:03.

Время: 04:03.
© OSzone.net 2001-