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

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

SharkyEXE 18-11-2023 00:14 3020163

Снять птичку/галочку Общие -> Правка -> Выделение мышью (Отключить выделение мышью)
 
Здравствуйте

Операционная система: Microsoft Windows 7 Professional Service Pack 1 x64 Russian

Что делает код ниже
Анимация
https://disk.yandex.ru/i/n4hXyzdMX8oxuw
Видео
https://disk.yandex.ru/i/-etD5nUxRGIxlg

Есть код в интернете
https://winsourcecode.blogspot.com/2...uick-edit.html

Скрытый текст
Код:

QuickEdit.exe Turns on or off Quick Edit mode in the console.
This uses the inbuilt compilers in Windows 10 - there are three VB.NET compilers and three C# compilers - just copy each text file into the same folder and double click the batch file to make the program.
REM QuickEdit.bat
REM This file compiles QuickEdit.vb to QuickEdit.exe
REM QuickEdit.exe turns on or off Quick Edit mode in the command prompt.
REM To Use
Rem          QuickEdit [on|off]
REM              Without parameters reports on the state of Quick Edit mode.
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /target:exe /out:"%~dp0\QuickEdit.exe" "%~dp0\QuickEdit.vb"
pause

'QuickEditOff.vb
Imports System
Imports System.IO
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

Public Module MyApplication
 
        Public Declare Function GetStdHandle Lib "kernel32" Alias "GetStdHandle" (ByVal nStdHandle As Long) As Long
        Public Declare Function GetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As IntPtr, ByRef lpMode As Integer) As Integer
        Public Declare Function SetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As Long, ByVal dwMode As Integer) As Integer

        Public Const STD_ERROR_HANDLE = -12&
        Public Const STD_INPUT_HANDLE = -10&
        Public Const STD_OUTPUT_HANDLE = -11&

        'Input
        Public Const ENABLE_EXTENDED_FLAGS = &h0080
        Public Const ENABLE_ECHO_INPUT = &h0004
        Public Const ENABLE_INSERT_MODE = &h0020
        Public Const ENABLE_LINE_INPUT = &h0002
        Public Const ENABLE_MOUSE_INPUT = &h0010
        Public Const ENABLE_PROCESSED_INPUT = &h0001
        Public Const ENABLE_QUICK_EDIT_MODE = &h0040
        Public Const ENABLE_WINDOW_INPUT = &h0008
        Public Const ENABLE_VIRTUAL_TERMINAL_INPUT = &h0200
        'Output
        Public Const ENABLE_PROCESSED_OUTPUT = &h0001
        Public Const ENABLE_WRAP_AT_EOL_OUTPUT = &h0002
        Public Const ENABLE_VIRTUAL_TERMINAL_PROCESSING = &h0004
        Public Const DISABLE_NEWLINE_AUTO_RETURN = &h0008
        Public Const ENABLE_LVB_GRID_WORLDWIDE = &h0010

Sub Main()
        Dim hIn As IntPtr
        Dim Ret As Integer
        Dim Mode As Integer
        hIn  = GetStdHandle(STD_INPUT_HANDLE)
        Ret = GetConsoleMode(hIn, Mode)
        If Command() = "" then
                If (Mode And ENABLE_QUICK_EDIT_MODE) = ENABLE_QUICK_EDIT_MODE then
                        Console.writeline("Quick Edit On")
                Else
                        Console.writeline("Quick Edit Off")
                End If
        ElseIf LCase(Command()) = "on"
                If (Mode And ENABLE_QUICK_EDIT_MODE) = 0 then Ret = SetConsoleMode(hIn, Mode + ENABLE_QUICK_EDIT_MODE)
                If Ret = 0 then Console.WriteLine(Hex(Ret) & " - " & err.lastdllerror)
        ElseIf LCase(Command()) = "off"
                If (Mode And ENABLE_QUICK_EDIT_MODE) = ENABLE_QUICK_EDIT_MODE then Ret = SetConsoleMode(hIn, Mode - ENABLE_QUICK_EDIT_MODE)
                If Ret = 0 then Console.WriteLine(Hex(Ret) & " - " & err.lastdllerror)
        End If
End Sub
End Module



Прилагаю готовый архив
https://disk.yandex.ru/d/rSOhZjiwCAeH-Q

В готовом архиве извлечь два файла и запустить файл QuickEdit_While_Wend.vb.bat

Появятся много exe файлов одинаковой работы для использования.

Разница - только под какую версию .Net Framework компилировалось
Код:

v1.0.3705
v1.1.4322
v2.0.50727
v3.0
v3.5
v4.0.30319

В процессе использования одного и того-же exe файла QuickEdit_While_Wend_v2.0.50727.exe на разных:
- версиях Windows (7, 10, 11)
- права администратора или права пользователя
- х86 или х64
- антивирус доктор веб 13 или нет антивируса

появлялись картинки ошибок

https://disk.yandex.ru/i/lUhahz-8uQ86GA
https://disk.yandex.ru/i/LLub1_kQKWYVCQ

Пожалуйста, будьте так, любезны, возможно или нет реализовать exe файл без разницы, какой язык программирования, PureBasic, Python, C+, C++, QBasic, Delphi и прочее, чтобы, откровенно, работало на максимальном количестве
Код:

- версиях Windows (7, 10, 11)
- права администратора или права пользователя
- х86 или х64
- антивирус доктор веб 13 или нет антивируса

и самое главное - не зависло, установлена или нет некая версия .Net Framework, чтобы НЕ было предложения установить некую версию .Net Framework - так сказать, смешно, ради 1-2-3 Килобайтного файла на разном количестве
Код:

- версиях Windows (7, 10, 11)
- права администратора или права пользователя
- х86 или х64
- антивирус доктор веб 13 или нет антивируса

если увижу ошибку - сразу устанавливать некую версию .Net Framework

Спасибо.

Sham 18-11-2023 10:38 3020172

quick mode что-ли отключить в консоли?
Вот простая сишечка отключает. Компилируйте в mingw.
Код:

#include <stdio.h>
#include <windows.h>

int main() {
    DWORD prev_mode;
    HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
    GetConsoleMode(hInput, &prev_mode);
    int err = SetConsoleMode(hInput, prev_mode & ENABLE_EXTENDED_FLAGS);
    puts(err == 0 ? "SetConsoleMode() returned zero" : "Quick mode is disabled");
    return 0;
}

Файл 169326

SharkyEXE 18-11-2023 11:48 3020175

Sham, здравствуйте.

Пожалуйста, будьте так любезны, хочется науки, знаний, если возможно, будьте так, любезны, научите, немного, а как из Вашего кода сделать чем проще, тем лучше - без наворотов в виде графических интерфейсов, GUI интерфейса и прочего ненужного, чем меньше размер на выхлопе ехе файла, тем лучше, без уси-пуси, сюси-нюси?

Спасибо.

Sham 18-11-2023 12:20 3020176

SharkyEXE, во вложенном выше архиве 32-битный exe

SharkyEXE 18-11-2023 12:24 3020177

Sham, здравствуйте

Пишется, лично у меня

Скрытый текст
Страница не найдена. Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией
Если это возможно, будьте так, любезны, прикрепите Яндекс.Диск, Майл Облако или любой другой файлообменник

Sham 18-11-2023 12:30 3020178

https://disk.yandex.ru/d/gEiiB7k73lKlSg

SharkyEXE 18-11-2023 13:05 3020181

Sham, здравствуйте

Супер, класс, работает как часы

Прилагаю видео

https://disk.yandex.ru/i/goa4qByn-bJhOg

Применительно к операционной системе Windows

х86 (32 разрядные ехе файлы) работают:
- на х86 операционной системе Windows
- на х64 операционной системе Windows

х64 (64 разрядные ехе файлы) работают:
- ТОЛЬКО на х64 операционной системе Windows
- х64 (64 разрядные ехе файлы) НЕ работают на х86 операционной системе Windows

Пожалуйста, будьте так, любезны, скомпилируйте 64 разрядный ехе файл

Мне для архива, истории, коллекции

Хуже не будет иметь в загашнике обе версии, как 32 разрядную, так и 64 разрядную

Спасибо.

Sham 18-11-2023 15:16 3020196

64-битная здесь - https://disk.yandex.ru/d/Nu7gcpTuT3wl0Q

SharkyEXE 18-11-2023 15:35 3020198

Sham, здравствуйте

Спасибо Вам, для коллекции, для истории, для моего архива, загашника

Работает идеально

Видео прилагаю

https://disk.yandex.ru/i/L3FhMLMzAX4RiQ

Спасибо.

SharkyEXE 20-11-2023 18:58 3020258

Sham, здравствуйте

Лично я планировал, что код универсальный на любой версии Windows.

В частности, на Microsoft Windows 7 Professional Service Pack 1 x64 Russian - Ваши ехе файлы, что Ваш ехе файл х86, что Ваш ехе файл х64 работают безупречно

См. видео

х86
https://disk.yandex.ru/i/goa4qByn-bJhOg

х64
https://disk.yandex.ru/i/L3FhMLMzAX4RiQ

В ходе теста Ваших файлов на: Майкрософт Windows 10 Корпоративная 10.0.19045 Сборка 19045 х64 Russian - Ваши ехе файлы, что Ваш ехе файл х86, что Ваш ехе файл х64 - беда, после запуска Ваших файлов выделение мышью остается

См. видео

х64
https://disk.yandex.ru/i/tf58Eor-TtiRHw

х86
https://disk.yandex.ru/i/xfcREN399sX7oA

Пожалуйста, будьте так, любезны, подрепетируйте

Спасибо.

NickM 20-11-2023 19:18 3020260

Цитата:

Цитата SharkyEXE
Лично я планировал »

Цитата:

Цитата SharkyEXE
подрепетируйте »

Скрытый текст

SharkyEXE 20-11-2023 19:37 3020262

NickM, здравствуйте.

Не обижайтесь, я не мог знать, что на разных версиях (7, 10) ОС Windows, одинаковые ехе файлы могу работать, а могут и нет

Serguei Kouzmine 21-11-2023 04:43 3020268

@SharkyEXE так вы всё - ?

можно и без компилятора вроде ведь - откровенно, на максимальном

Sham 21-11-2023 07:06 3020269

SharkyEXE, непонятно, как вы его используете. SetConsoleMode() ставит флаги на текущую консоль. Если софт создаёт другую консоль или сам вызывает внутри SetConsoleMode(), то вероятно настройки консоли меняются. Очевидно, что запускаемый софт не должен создавать новую консоль, то есть start /b /wait ... . Наверное, можно без флага wait.

SharkyEXE 21-11-2023 08:27 3020270

Sham, здравствуйте

Вот целиком-полностью скрипт=файл 1.cmd

https://disk.yandex.ru/d/Ex9uyexiN7tfkg

Как вызывается файл quickmode.c.exe или quickmode.c.x64.exe - это строка 99

Скрытый текст
Код:

Start "" /b "%NameBBB%"
Просьба понять, повторюсь, я не мог знать, файл 1.cmd на ОС Windows 7, ОС Windows 10 - будет по разному работать.
Вполне возможно, в консоли ОС Windows 10 произошла какая-то технология, что в консоли ОС Windows 10, ехе файл х86 или х64 НЕ выключает выделение мышкой, при этом в консоли ОС Windows 7, ехе файл х86 или х64 работает замечательно... Видео прилагал ранее, мне нет смысла никого вводить в заблуждение, зачем...

В интернете по quickmode по ОС Windows 10 есть вот такая информация

Скрытый текст
https://stackoverflow.com/questions/55497407/disable-quick-edit-mode-for-console-from-c
https://stackoverflow.com/a/55498324

Код:

#include<conio.h>
#include<iostream>
#include<windows.h>
using namespace std;


int main(){
    HANDLE hInput;
    DWORD prev_mode;
    hInput = GetStdHandle(STD_INPUT_HANDLE);
    GetConsoleMode(hInput, &prev_mode);
    SetConsoleMode(hInput, prev_mode & ENABLE_EXTENDED_FLAGS);
    cout<<"The quick edit mode stopped now press any key to re enable it"<<endl;
    _getch();
    SetConsoleMode(hInput, prev_mode);
    cout<<"Quick edit mode reenabled click any key to exit";
    _getch();
    return 0;
}


Sham 21-11-2023 09:03 3020271

ну вот по типу этого
Код:

start /b /wait quickmode.c.x64.exe
start /b /wait tasklist

выделение работает? Так и у себя делайте все вызовы архиватора и taskkill, чтобы не создавали новую консоль.

SharkyEXE 21-11-2023 09:19 3020272

Sham, здравствуйте.

Пожалуйста, не обижайтесь, сможете скомпилировать тот код, х86 и х64, пожалуйста?

Так сказать, в мой скрипт прикручу проверку - если ОС Виндоус 7, будут те файлы работать х86 или х64
Ели ОС Виндоус 10, будут новые файлы работать х86 или х64

Конечно, желательно, универсальный код ОС Виндоус 7 и Виндовс 10, чтобы вместо 4х файлов было два файла, не считать наглостью...

По поводу тасклист, тасккилл - оооочееь хочется максимально автономное, чтобы ещё тасклист и тасккилл не носить на флешке

Спасибо

Sham 21-11-2023 09:45 3020273

Цитируемый вами код выключает режим, потом ждёт нажатия клавиши и обратно включает как было. Обратите внимание, что порядок вызова функций и используемые константы абсолютно идентичны.

Serguei Kouzmine 21-11-2023 17:16 3020281

Цитата:

Цитата SharkyEXE
универсальный код ОС Виндоус 7 и Виндовс 10, чтобы вместо 4х файлов был 1 файл, не считать наглостью »

- на повершелл подойдет ?

SharkyEXE 21-11-2023 17:25 3020282

Serguei Kouzmine, здравствуйте.

Да, подойдёт

Serguei Kouzmine 21-11-2023 17:47 3020284

это просто упражнение в освоении страницы https://www.pinvoke.net/default.aspx...Functions.html

Код:

# https://www.pinvoke.net/default.aspx/kernel32/ConsoleFunctions.html
add-type -typedefinition @'
using System;
using  System.IO;
using System.Runtime.InteropServices;
using  Microsoft.Win32;

public class Data {

  public static int STD_ERROR_HANDLE = -12;
  public static int STD_INPUT_HANDLE = -10;
  public static int  STD_OUTPUT_HANDLE = -11;


  [Flags]
    private enum ConsoleModes : uint {
        ENABLE_PROCESSED_INPUT = 0x0001,
        ENABLE_LINE_INPUT = 0x0002,
        ENABLE_ECHO_INPUT = 0x0004,
        ENABLE_WINDOW_INPUT = 0x0008,
        ENABLE_MOUSE_INPUT = 0x0010,
        ENABLE_INSERT_MODE = 0x0020,
        ENABLE_QUICK_EDIT_MODE = 0x0040,
        ENABLE_EXTENDED_FLAGS = 0x0080,
        ENABLE_AUTO_POSITION = 0x0100,
        ENABLE_VIRTUAL_TERMINAL_INPUT = 0x0200,

        ENABLE_PROCESSED_OUTPUT = 0x0001,
        ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002,
        ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004,
        DISABLE_NEWLINE_AUTO_RETURN = 0x0008,
        ENABLE_LVB_GRID_WORLDWIDE = 0x0010
    }

  [DllImport("kernel32.dll", SetLastError = true)]   
  static extern IntPtr GetStdHandle(int nStdHandle);   
  [DllImport("kernel32.dll")]   
  static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);   
  [DllImport("kernel32.dll")]   
  static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);   

  public static void enableQuickEdit() {
    IntPtr _ConsoleHandle = GetStdHandle(STD_INPUT_HANDLE); 
    uint _ConsoleMode = 0;
    GetConsoleMode(_ConsoleHandle, out _ConsoleMode);   
    Console.Error.WriteLine(_ConsoleMode);
    _ConsoleMode |= (uint )ConsoleModes.ENABLE_QUICK_EDIT_MODE;   
    Console.Error.WriteLine(_ConsoleMode);
    SetConsoleMode(_ConsoleHandle, _ConsoleMode); 
  }
  public static void disableQuickEdit() {
    IntPtr _ConsoleHandle = GetStdHandle(STD_INPUT_HANDLE); 
    uint _ConsoleMode = 0;
    GetConsoleMode(_ConsoleHandle, out _ConsoleMode);   
    Console.Error.WriteLine(_ConsoleMode);
    _ConsoleMode &= 0xffff - (uint) (ConsoleModes.ENABLE_QUICK_EDIT_MODE);
    Console.Error.WriteLine(_ConsoleMode);
    SetConsoleMode(_ConsoleHandle, _ConsoleMode); 
  }
}
'@


[Data]::enableQuickEdit()
[Data]::disableQuickEdirt()

приделать логику когда вызывать enableQuickEdit а когда disableQuickEdirt сможете сами надеюсь

SharkyEXE 21-11-2023 19:19 3020291

Sham, здравствуйте

По поводу этого

http://forum.oszone.net/post-3020271-16.html

Код:

ну вот по типу этого
Код:Выделить весь код
start /b /wait quickmode.c.x64.exe
start /b /wait tasklist
выделение работает?

Вот снял видео, на пути к лучшему
https://disk.yandex.ru/i/668O-3bVacbvAg
Скрытый текст
Код:

start /b /wait quickmode.c.x64.exe
Rem start /b /wait tasklist

Pause

start "" /b /wait "C:\Program Files\7-Zip\7z.exe" a "1.7z" -im!"%~dp0*.*doc*" "%~dp0*.*xls*" "%~dp0*.*tmp*" "%~dp0*.*ppt*" "%~dp0*.*acc*" "%~dp0*.*rtf*" "%~dp0*.*txt*" "%~dp0*.*cdr*" "%~dp0*.*cdw*" "%~dp0*.*bak*" "%~dp0*.*jpg*" "%~dp0F\" "%~dp0A\" "%~dp0B\" "%~dp0Be\" "%~dp0PP\" "%~dp0SIZ\" "%~dp001_A\" "%~dp002_Be\" "%~dp003_B\" "%~dp004_PP\" "%~dp005_SIZ\" "%~dp0Old\" -x!.\*.* -im!.\* -m0=LZMA:d=1536m:fb=273 -mx=9 -mmt=2 -ssw

Pause

Exit


Микро пожелание

Сделайте все тоже самое, что Вы сделали, х86 и х64 файлы, НО, добавить опцию "-QuickModeEnabled"

Чтобы мне в конце файла, перед Exit, ДОписать
start /b /wait quickmode.c.x64.exe -QuickModeEnabled

Скрытый текст

start /b /wait quickmode.c.x64.exe
Rem start /b /wait tasklist

Pause

start "" /b /wait "C:\Program Files\7-Zip\7z.exe" a "1.7z" -im!"%~dp0*.*doc*" "%~dp0*.*xls*" "%~dp0*.*tmp*" "%~dp0*.*ppt*" "%~dp0*.*acc*" "%~dp0*.*rtf*" "%~dp0*.*txt*" "%~dp0*.*cdr*" "%~dp0*.*cdw*" "%~dp0*.*bak*" "%~dp0*.*jpg*" "%~dp0F\" "%~dp0A\" "%~dp0B\" "%~dp0Be\" "%~dp0PP\" "%~dp0SIZ\" "%~dp001_A\" "%~dp002_Be\" "%~dp003_B\" "%~dp004_PP\" "%~dp005_SIZ\" "%~dp0Old\" -x!.\*.* -im!.\* -m0=LZMA:d=1536m:fb=273 -mx=9 -mmt=2 -ssw

start /b /wait quickmode.c.x64.exe -QuickModeEnabled

Pause

Exit
и чтобы у меня, в конце ОТработки создания архива, было снова ДОступно выделение мышкой

PS. Просто на данный момент, архив создается, но после создания архива, в консоли НЕ работает выделение мышкой

SharkyEXE 21-11-2023 21:55 3020296

Sham, здравствуйте

На базе Вашего кода

Код:

#include <stdio.h>
#include <windows.h>

int main() {
    DWORD prev_mode;
    HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
    GetConsoleMode(hInput, &prev_mode);
    int err = SetConsoleMode(hInput, prev_mode & ENABLE_EXTENDED_FLAGS);
    puts(err == 0 ? "SetConsoleMode() returned zero" : "Quick mode is disabled");
    return 0;
}

попытался сделать ВКЛючение "Выделение мышкой"

Код:

#include <stdio.h>
#include <windows.h>

int main() {
    DWORD prev_mode;
    HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
    GetConsoleMode(hInput, &prev_mode);
    int err = SetConsoleMode(hInput, prev_mode & ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS);
    puts(err == 0 ? "SetConsoleMode() returned zero" : "Quick mode is enabled");
    return 0;
}

Компилирую в ехе файл.
В конце создания архива, запускается ехе файл, но "Выделение мышкой" НЕ включено

Serguei Kouzmine 21-11-2023 22:04 3020297

ошибка в логике


Время: 00:05.

Время: 00:05.
© OSzone.net 2001-