PDA

Показать полную графическую версию : [решено] do not touch, do not close


7ka
12-03-2013, 15:57
Уважаемые, подскажите пожалуйста, есть ли возможность запретить закрытие командной строки. Что бы кнопка закрытия была не активна при выполнении пакетного файла?

Anonymоus
12-03-2013, 17:54
Примерный неработающий вариант. Приведён здесь лишь, как иллюстрация подхода, который возможно, вам пригодится.

@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 (http://www.nirsoft.net/utils/nircmd.html).

Iska
12-03-2013, 19:11
7ka, смысл сего каков?

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

7ka
12-03-2013, 19:27
Iska, спасибо, будет время, завтра попробую
Что помешает пользователю использовать прерывание по Ctrl-C или завершение процесса окна консоли? »
не все ёгурты пользователи одинаково полезны грамотны)))

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

gora
13-03-2013, 10:51
неработающий вариант »
Работающий на 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

https://dl.dropbox.com/u/35142695/no_keys.png

7ka
13-03-2013, 11:19
gora

http://i52.fastpic.ru/big/2013/0313/19/d2421f18bf908e19ed3130b6889c7119.png

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

gora
13-03-2013, 11:22
и все остальное осталось »
На какой системе?
Работающий на win7 »

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

7ka
13-03-2013, 12:26
На какой системе? »
win7hb x64
благо машин куча рядом, эта ось уже давно стоит, может что с ней не так, сейчас попробую на другой, отпишусь...

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

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

7ka
13-03-2013, 13:01
Сделать окно неактивным позволяет добавление стиля 0x08000000.
Код:
nircmdc win +style process /%MyPID% 0x08000000
Кнопки будут видны, но они, будут неактивны, нажать будет нельзя, но и окно перетащить неудастся. »
Благодарю, это вариант мне больше подошел!




© OSzone.net 2001-2012