Войти

Показать полную графическую версию : [решено] Отключить выделение мышью в bat файле


vngreez@vk
02-04-2017, 18:17
необходимо отключить выделение мышью в bat файле
через настройки не предлагать

x0r
02-04-2017, 19:31
Windows Registry Editor Version 5.00

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

vngreez@vk
02-04-2017, 19:52
x0r, а можно это реализовать только для этого батника?

x0r
03-04-2017, 00:17
Можешь попробовать. Яхз, чисто мысля.(только не "для батника", а для "окна терминала" с опр. именем.)
В разделе реестра 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
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
Как-то так: »
«Как-то так» как раз не получится. Только так, как Вы указали выше — сначала импорт в реестр, затем запуск на исполнение пакетного файла. Когда пакетный файл уже работает — новое значение параметра в реестре на него не повлияет, ибо значение считывается из реестра и используется при задании свойства конкретного окна консоли при создании процесса.

vngreez@vk
03-04-2017, 17:52
Iska, скомпилировал. Вызываю... ноль эмоций
сделал так:
@echo off
DisableQuickEditConsoleMode.exe
....

Iska
04-04-2017, 00:58
Создаём пакетный файл:
@echo off
setlocal enableextensions enabledelayedexpansion

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

endlocal
exit /b 0

Запускаем, останавливаемся на первой паузе, смотрим свойства окна консоли:
http://i.imgur.com/VAOAIjg.png
Видим, что флаг QuickEdit (Быстрая вставка) установлен.

Закрываем свойства окна консоли, нажимаем любую клавишу на клавиатуре, останавливаемся на второй паузе, опять смотрим свойства окна консоли:
http://i.imgur.com/yt78ixw.png
Видим, что флаг QuickEdit (Быстрая вставка) сброшен.

Что не так?

vngreez@vk
04-04-2017, 17:39
Iska, мне нужен параметр выше (Выделение мышью)
чтобы не прерывался код программы при нажатие.

Iska
04-04-2017, 19:09
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
Iska, Спасибо большое :yahoo:

alekseyesin@vk
10-12-2019, 18:25
необходимо отключить выделение мышью в bat файле
через настройки не предлагать »

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

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

Iska
10-12-2019, 19:03
alekseyesin@vk, Вы с автором через vk свяжитесь (Вам там проще будет), поскольку здесь он уже два года как не появлялся, и потому навряд ли Вам ответит, кроме вышеизложенного:
через настройки не предлагать »

alekseyesin@vk
11-12-2019, 12:24
Iska, я видел это сообщение и тоже процитировал.
Мне интересно узнать для чего идти по более сложному пути, если есть простой.

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

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

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

Iska
18-12-2019, 17:48
Я подожду здесь еще несколько лет, мне не критично »
«Иногда они возвращаются»™ :).




© OSzone.net 2001-2012