Войти

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


Страниц : 1 [2]

Serguei Kouzmine
21-11-2023, 17:47
это просто упражнение в освоении страницы https://www.pinvoke.net/default.aspx/kernel32/ConsoleFunctions.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
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-3bVacbvAgstart /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
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
ошибка в логике




© OSzone.net 2001-2012