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

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

vngreez@vk 02-04-2017 18:17 2725240

Отключить выделение мышью в bat файле
 
необходимо отключить выделение мышью в bat файле
через настройки не предлагать

x0r 02-04-2017 19:31 2725260

Код:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console]
"QuickEdit"=dword:00000000


vngreez@vk 02-04-2017 19:52 2725271

x0r, а можно это реализовать только для этого батника?

x0r 03-04-2017 00:17 2725376

Можешь попробовать. Яхз, чисто мысля.(только не "для батника", а для "окна терминала" с опр. именем.)
В разделе реестра HKEY_CURRENT_USER\Console\ создать раздел с каким нить именем, mybatneg нопример. Получилось так:

Код:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console\mybatneg]
"QuickEdit"=dword:00000000

При запуске своего батнега вначале ставишь комманду имени
Код:

@echo off
@title mybatneg
rem дальше твой код.....

должно получиццо. смотри reg /?

Как-то так:
Код:

@echo off
@title mybatneg
@reg add "HKEY_CURRENT_USER\Console\mybatneg" /v "QuickEdit" /t REG_DWORD /d 0 /f > nul
rem дальше твой код.....


Iska 03-04-2017 01:13 2725386

Цитата:

Цитата vngreez@vk
x0r, а можно это реализовать только для этого батника? »

В общем и целом — можно.

Создайте файл DisableQuickEditConsoleMode.vb:
Код:

Module mainModule
        Declare Function GetStdHandle  Lib "kernel32" (ByVal nStdHandle As Integer) As Integer
        Declare Function GetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As Integer, ByRef lpMode As Integer) As Integer
        Declare Function SetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As Integer, ByVal dwMode As Integer) As Integer

        Public Const STD_INPUT_HANDLE As Integer = -10&

        Sub Main()
                Dim hConsole As Integer
                Dim iMode As Integer
                Dim bSuccess As Integer

                hConsole = GetStdHandle(STD_INPUT_HANDLE)
                bSuccess = GetConsoleMode(hConsole, iMode)
                bSuccess = SetConsoleMode(hConsole, iMode And Not &H20)
        End Sub
End Module

Скомпилируйте его посредством:
Код:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\vbc.exe "C:\Мои проекты\0058\DisableQuickEditConsoleMode.vb" /target:exe /nologo /verbose
где: «C:\Windows\Microsoft.NET\Framework\v2.0.50727\vbc.exe» — Ваш путь к компилятору Visual Basic Compilier, а «C:\Мои проекты\0058\DisableQuickEditConsoleMode.vb» — Ваш путь к созданному файлу DisableQuickEditConsoleMode.vb. На выходе Вы должны получить файл DisableQuickEditConsoleMode.exe, который должен быть вызван в Вашем пакетном файле для сброса режима QuickEdit. Для работы ему будет требоваться установленная версия .Net FrameWork не ниже той, компилятор которой Вы использовали.

Iska 03-04-2017 03:52 2725555

Цитата:

Цитата x0r
Как-то так: »

«Как-то так» как раз не получится. Только так, как Вы указали выше — сначала импорт в реестр, затем запуск на исполнение пакетного файла. Когда пакетный файл уже работает — новое значение параметра в реестре на него не повлияет, ибо значение считывается из реестра и используется при задании свойства конкретного окна консоли при создании процесса.

vngreez@vk 03-04-2017 17:52 2725875

Iska, скомпилировал. Вызываю... ноль эмоций
сделал так:
@echo off
DisableQuickEditConsoleMode.exe
....

Iska 04-04-2017 00:58 2725991

Создаём пакетный файл:
0001.cmd
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

pause
"C:\Мои проекты\0058\DisableQuickEditConsoleMode.exe"
pause

endlocal
exit /b 0


Запускаем, останавливаемся на первой паузе, смотрим свойства окна консоли:
Скрытый текст

Видим, что флаг QuickEdit (Быстрая вставка) установлен.

Закрываем свойства окна консоли, нажимаем любую клавишу на клавиатуре, останавливаемся на второй паузе, опять смотрим свойства окна консоли:
Скрытый текст

Видим, что флаг QuickEdit (Быстрая вставка) сброшен.

Что не так?

vngreez@vk 04-04-2017 17:39 2726168

Iska, мне нужен параметр выше (Выделение мышью)
чтобы не прерывался код программы при нажатие.

Iska 04-04-2017 19:09 2726196

vngreez@vk, приношу Вам свои извинения: даже не знаю, что меня так переклинило, что я начал работать с другим параметром, и даже перевод меня не смутил.

Достаточно заменить в вышеприведённом коде битовую маску с 0x20 на 0x40:
Код:

Module mainModule
        Declare Function GetStdHandle  Lib "kernel32" (ByVal nStdHandle As Integer) As Integer
        Declare Function GetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As Integer, ByRef lpMode As Integer) As Integer
        Declare Function SetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As Integer, ByVal dwMode As Integer) As Integer

        Public Const STD_INPUT_HANDLE As Integer = -10&

        Sub Main()
                Dim hConsole As Integer
                Dim iMode As Integer
                Dim bSuccess As Integer

                hConsole = GetStdHandle(STD_INPUT_HANDLE)
                bSuccess = GetConsoleMode(hConsole, iMode)
                bSuccess = SetConsoleMode(hConsole, iMode And Not &H40)
        End Sub
End Module


vngreez@vk 04-04-2017 19:50 2726209

Iska, Спасибо большое :yahoo:

alekseyesin@vk 10-12-2019 18:25 2899828

Цитата:

Цитата vngreez@vk
необходимо отключить выделение мышью в bat файле
через настройки не предлагать »

А чем не устраивает установка флага через настройки?
Создаешь ярлык к bat файлу который лежит на сервере, делаешь там любые настройки и прописываешь запуск скрипта только через ярлык.

Ведь нужного фреймворка может и не оказаться на целевой машине, а ярлык это всегда надежно и минимум программ.

Iska 10-12-2019 19:03 2899835

alekseyesin@vk, Вы с автором через vk свяжитесь (Вам там проще будет), поскольку здесь он уже два года как не появлялся, и потому навряд ли Вам ответит, кроме вышеизложенного:
Цитата:

Цитата vngreez@vk
через настройки не предлагать »


alekseyesin@vk 11-12-2019 12:24 2899928

Iska, я видел это сообщение и тоже процитировал.
Мне интересно узнать для чего идти по более сложному пути, если есть простой.

Iska 11-12-2019 14:29 2899953

alekseyesin@vk, я ж написал: если интересно — попробуйте связаться с ним через vk, здесь он уже два года не появлялся.

alekseyesin@vk 18-12-2019 12:24 2901045

Цитата:

Цитата Iska
alekseyesin@vk, я ж написал: если интересно — попробуйте связаться с ним через vk, здесь он уже два года не появлялся. »

Я подожду здесь еще несколько лет, мне не критично :)
Тем более что в вк его страница уже не активна

Iska 18-12-2019 17:48 2901094

Цитата:

Цитата alekseyesin@vk
Я подожду здесь еще несколько лет, мне не критично »

«Иногда они возвращаются»™ :).


Время: 01:27.

Время: 01:27.
© OSzone.net 2001-