Что нового

Эмуляция отмены действия (ctrl+z)

Noter

Новичок
Сообщения
4
Репутация
0
Добрый день.

По всем своим потребностям (реализация комбинаций клавиш) нашел информацию, а вот отмена последнего действия в Винде, ctrl+z не нашел как сделать.
Все испробовал, не получается.
Подскажите пожалуйста, как реализовать?
Поиск юзал, информацию не нашел.

Спасибо))
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
У вас не работает send?
Код:
Send("^z")
 
Автор
N

Noter

Новичок
Сообщения
4
Репутация
0
Dima1337 сказал(а):
У вас не работает send?
Код:
Send("^z")

Спасибо за ответ.
Данная команда печатает просто символ "z".
Windows не понимает, что это комбинация клавиш на отмену действия.

У меня задача такая.
Я вставляю данные из буфера обмена в поле ввода,
Send ("+{INS}")
смотрю есть ли устраивающий меня результат, если нет, хочу отменить вставку, ctrl+z, очистив тем самым поле для ввода следующего значения.
Send("^z") не отменяет вставку из буфера, а допечатывает в поле для ввода z.

Для облегчения понимания:
Вставляю данные из буфера в поле ввода:
Send ("+{INS}")
... и тут же хочу их удалить отменой операции, без лишних движений и расчетов:
Send("^z")
Данные в поле вставляются, но не удаляются.

Вот такая задачка)
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Код:
Func _123123()
	Send('+{INS}')
	Send('^{z}')
EndFunc

Запустите скрипт с английской раскладкой, вероятно в этом кроется ваша проблема
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Noter
Попробуйте так
Код:
Send("{CTRLDOWN}z{CTRLUP}")
 
Автор
N

Noter

Новичок
Сообщения
4
Репутация
0
Dima1337 сказал(а):
Код:
Func _123123()
	Send('+{INS}')
	Send('^{z}')
EndFunc

Запустите скрипт с английской раскладкой, вероятно в этом кроется ваша проблема

Данный код вставляет из буфера данные, дописывает в конец z.
Отмена операции не происходит(
Раскладка английская


Добавлено:
Сообщение автоматически объединено:

InnI сказал(а):
Noter
Попробуйте так
Код:
Send("{CTRLDOWN}z{CTRLUP}")

Данный код ничего не дописывает, но и не отменяет(
Раскладка английская


Добавлено:
Сообщение автоматически объединено:

Друзья.

Методом тыка. Не понимаю, почему так происходит.
По идее, при английской раскладке, должен работать код:
Send("^z")
Он не работает. Просто добавляет знак "z".
Код:
Send("^я")
при русской раскладке работает.
Отменяет последнее действие.

Берите на вооружение.

Тему можно закрывать, но она не раскрыта)
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Noter сказал(а):
Методом тыка. Не понимаю, почему так происходит.
По идее, при английской раскладке, должен работать код:
Send("^z")
Он не работает. Просто добавляет знак "z".
Код:
Send("^я")
при русской раскладке работает.
Отменяет последнее действие.

То есть у вас в МОМЕНТ ЗАПУСКА СКРИПТА стоит английская раскладка, и код с клавишей "Z" при этом не работает?Но работает код с клавишей "Я" все верно?
При тестировании вот этого кода, Во время запуска скрипта у меня была РУССКАЯ раскладка:
Код:
HotKeySet("{1}","_123123")

While 1
	Sleep(100)
WEnd

Func _123123()
    Send('+{INS}')
    Send('^{z}')
EndFunc


Было то же самое что у вас. Это нормально поведение функции Send.

Если вы все проверили и не работает то вариант для вас либо с помощью "Я" либо вот тема:
http://autoit-script.ru/index.php?topic=25727.0
 
Автор
N

Noter

Новичок
Сообщения
4
Репутация
0
Раскладка английская, код:
Send("^{z}")
не работает.

Раскладка русская, код:
Send("^{я}")
работает.

Чудеса:smile:
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <WinAPISys.au3>
_WinAPI_SetKeyboardLayout(WinGetHandle(AutoItWinGetTitle()), 0x0409)

Send("^{z}")
 
  • Like
Реакции: LSD

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Noter [?]
Какая у вас раскладка в Windows по умолчанию? Другими словами, когда запускается приложение (например, блокнот) какая раскладка ему устанавливается? Если русская, то никаких чудес.
 
Верх