Показать полную графическую версию : [решено] Отключить выделение мышью в bat файле
vngreez@vk
02-04-2017, 18:17
необходимо отключить выделение мышью в bat файле
через настройки не предлагать
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console]
"QuickEdit"=dword:00000000
vngreez@vk
02-04-2017, 19:52
x0r, а можно это реализовать только для этого батника?
Можешь попробовать. Яхз, чисто мысля.(только не "для батника", а для "окна терминала" с опр. именем.)
В разделе реестра 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 дальше твой код.....
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 не ниже той, компилятор которой Вы использовали.
Как-то так: »
«Как-то так» как раз не получится. Только так, как Вы указали выше — сначала импорт в реестр, затем запуск на исполнение пакетного файла. Когда пакетный файл уже работает — новое значение параметра в реестре на него не повлияет, ибо значение считывается из реестра и используется при задании свойства конкретного окна консоли при создании процесса.
vngreez@vk
03-04-2017, 17:52
Iska, скомпилировал. Вызываю... ноль эмоций
сделал так:
@echo off
DisableQuickEditConsoleMode.exe
....
Создаём пакетный файл:
@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, мне нужен параметр выше (Выделение мышью)
чтобы не прерывался код программы при нажатие.
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 файлу который лежит на сервере, делаешь там любые настройки и прописываешь запуск скрипта только через ярлык.
Ведь нужного фреймворка может и не оказаться на целевой машине, а ярлык это всегда надежно и минимум программ.
alekseyesin@vk, Вы с автором через vk свяжитесь (Вам там проще будет), поскольку здесь он уже два года как не появлялся, и потому навряд ли Вам ответит, кроме вышеизложенного:
через настройки не предлагать »
alekseyesin@vk
11-12-2019, 12:24
Iska, я видел это сообщение и тоже процитировал.
Мне интересно узнать для чего идти по более сложному пути, если есть простой.
alekseyesin@vk, я ж написал: если интересно — попробуйте связаться с ним через vk, здесь он уже два года не появлялся.
alekseyesin@vk
18-12-2019, 12:24
alekseyesin@vk, я ж написал: если интересно — попробуйте связаться с ним через vk, здесь он уже два года не появлялся. »
Я подожду здесь еще несколько лет, мне не критично :)
Тем более что в вк его страница уже не активна
Я подожду здесь еще несколько лет, мне не критично »
«Иногда они возвращаются»™ :).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.