Ищу способ для ввода символов в косольную прогу.

Lenchans

Суть: есть консольная прога, читает символы с клавиатуры. Нужно: для автоматизации действий нужно как-то закидывать в нее последовательности символов (только с клавиатуры - без мыши).
Желательно, чтобы еще и всякие типа End, PgUp, PgDn воспринимались.
У кого есть программулина такая?
ЗЫ В инет просьба не отсылать

pollak

А чо, конвейеры уже не рулят?

sergey_m

Ты хочешь unix way.

Lenchans

Хочу в винде.
А что такое конвейеры?
Если перенаправление ввода-вывода, то не рулит. Делалось так
program.exe < 1.txt

pollak

Да, перенаправление. Чем оно тебе не нравится?

maggi14

А чем тебя не устраивает банальный посыл мессаги в нужное окно?

sergey_m

> Хочу в винде.
Чуве, я буду ссылаться на этот тред, когда DarkGray в Programming опять начнет свою пропаганду.

evgen5555

Если перенаправление ввода-вывода, то не рулит.
Как это "не рулит"? Можно поподробнее?

durka82

А нельзя создать виртуальный файл и в него перенаправить stdout проги, которая выдает команды?
А этот файл перенаправить на stdin через "program.exe < 1.txt"?

Marinavo_0507

Для винды отцы хвалят прогу AutoIt.
Посмотри, вдруг оно.

kuby

А чем тебя не устраивает банальный посыл мессаги в нужное окно?
Тут один я слова "через жопу" увидел?

maggi14

Не ты один. Но прочитай сначала постановку задачи.

Lenchans

На перенаправление прога вообще никак не реагирует. Может, конечно, потому что там вначале пробел нужно нажать?
А вот про посыл мессаги в окно и
А нельзя создать виртуальный файл и в него перенаправить stdout проги, которая выдает команды?
А этот файл перенаправить на stdin через "program.exe < 1.txt"?
поподробнее, пжлст.
Если под посылом мессаги в окно подразумеваются операции типа копи паста, то не действует.
С AutoIt сейчас пытаюсь разобраться.

Lenchans

Кажется в этом случае зарулила прога AutoIt. Поприветствуем победителя.

sergey_m

Как и следовало ожидать, в Windows все решилось через ж.

evgen5555

В случае, когда человек не знаком с понятиями "конвейер" и "перенаправление вывода", не поможет и гну-линукскс

Lenchans

А может не стоит так уж меня опускать. Про перенаправление я знал. А что такое конвейер применительно к этому вопросу - и впрямь не знаком. Может, раз такой умный, дашь справку или ссыль на книгу.

pollak

То есть - ты знал про значок "<" и не знаешь про значок "|"?

nik93

В МГУ пиздец много очень умных, таких, что если кто чуток глупее, то обосрать надо пополной. Иначе как подтвердить свою умность?

Lenchans

То есть - ты знал про значок "<" и не знаешь про значок "|"?
Того, что я знаю о значке | не хватает, чтобы организовать такое перенаправление ввода/вывода. Впрочем, мое знакомство с этим значком ограничивается командами типа
type file | more
Если не влом, приведи пример, как можно это применить в моем случае.
2 - Забей, это неотделимая часть человеческого общества.

bleyman

Bad Bad:
Желательно, чтобы еще и всякие типа End, PgUp, PgDn воспринимались
Glebius:
Как и следовало ожидать, в Windows все решилось через ж.
Неплохо бы тебе читать внимательней. Из вышесказанного очевидно, что "консольной прогой" чуве называет досовскую прогу, которая запускается в консольном окошке, но никакого отношения к юникс вэй не имеет (как NC, например. Или MC

pollak

Ну, этот значок как раз-таки направляет вывод одной проги во ввод другой...
то есть пишешь
program1 | program2
и всё выведенное первой программой становится входными данными для второй.
Хотя если прав - такое может и не сработать.

sergey_m

Неплохо бы тебе читать внимательней. Из вышесказанного очевидно, что "консольной прогой" чуве называет досовскую прогу, которая запускается в консольном окошке, но никакого отношения к юникс вэй не имеет (как NC, например. Или MC
И что из этого?

bleyman

Не, ничего. Небери вголову.

rosali

И что из этого?
В конце концов, может быть эта програ _специально_ задумывалась так, чтобы противиться автоматизации ввода, например, она этот самый ввод не из stdin читает, а именно _с клавиатуры_.

Marinavo_0507

А в виндах нажатия на PgUp, PgDown можно прочитать с stdin?

pollak

Да, можно.
Если я не ошибаюсь - там такие "символы" кодируются двумя байтами, первый из которых - нулевой.

rosali

Что значит в Виндах? А что в Unix-е нельзя? Есть же у них код какой-то...

Marinavo_0507

В Unix как раз можно.

rosali

Ага, в Unix выяснилось действительно можно, пишем

$ cat > xxx
дальше набираем:
PgDn Insert 'a' 'b' 'c' Esc ':' 'w' 'q' Enter Enter Ctrl-'d'
видим

^[[6~^[[2~abc^[:wq


длина этого xxx 17 байт, видать Esc - 2 символа, а PgDn, Insert - по 4.
ну и потом

$ cat xxx | vim yyy > /dev/null
Он правда возмущается
 
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
Но все редактирует как просили. Молодца!

bleyman

Кажися нет.
Ну то есть аски-символами они кодируются (именно так - 0 и специальный байт но получаются совершенно другими способами. Я в это практически уверен.
Чувак, кстати, свою проблему уже решил.
Но вообще специальная прога занимает около 15 строчек на плюсах. Типа есть мега-апишка keybd_event, которая запихивает нажатия непосредственно в драйвер клавиатуры, так что отличить их от настоящих физически невозможно.

Marinavo_0507

> запихивает нажатия непосредственно в драйвер клавиатуры, так что отличить их от настоящих физически невозможно
типа надо не в драйвер клавиатуры, а в нужное окно

bleyman

Дык! Запихиваешь альт-таб, потом пихаешь то что нужно.
Я так в АДоМе колодцы пил =)

Marinavo_0507

> Запихиваешь альт-таб
Хреново.
Зависимость от того, в каком порядке менеджеру окон вздумается переключать.
Даже если всё это фиксировано, то может неожиданно всплыть левое окно.

maggi14

А зачем так париться? Неужели через СендМессидж вам кажется более кривым способом?

bleyman

Ну мы же не Универсальный Крякер Интернета обсуждаем, а тулзу для единичного найоба конкретной проги.
По поводу сендмесседжа у меня есть жуткие подозрения, что он может банально не сработать. Типа прога досовская, хуйеёзнает. А тут типа старый добрый лом, который сработает всегда, а пользоваться им не намного неудобней.

Lenchans

Я так в АДоМе колодцы пил =)
ЛОЛ
Я как раз тем же самым страдаю.
Зато с помошью проги смог написать скрипт - за последний час - +80 маны и +20 к силе - не прикасаясь к клавиатуре аднака.

Kira

напиши скриптик для WSH.

Lenchans

Windows Script Host
Чтоли? - Посмотрел - ниасилил.
Оставить комментарий
Имя или ник:
Комментарий: