Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2013, 01:42   #1
Homadrom
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 45
По умолчанию Delphi и cmd

Привет всем. Кто-нибудь может объяснить следующее:
Уже всякими способами пробовал отправить в cmd текст или символ, но все безуспешно.
Передается только нажатие Enter и все.
Пользовался в основном Sendmessage и Postmessage.
Почему так происходит? В cmd встроена защита от стороннего вмешательства?
Homadrom вне форума Ответить с цитированием
Старый 05.05.2013, 09:25   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Работа с консолью
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.05.2013, 09:37   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Пользовался в основном Sendmessage и Postmessage.
Просто неправильно пробовал )
Взял бы и показал как делаешь.
Цитата:
В cmd встроена защита от стороннего вмешательства?
Нет там ниче такого. К слову keybrd_event() без проблем с консолькой работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2013, 12:15   #4
Homadrom
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 45
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Спасибо. Но опять ничего не вводится. Да и попроще что-нибудь надо. Типа команды одной и все.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Просто неправильно пробовал )
Взял бы и показал как делаешь.
Вот последний вариант, который не вышел:
Код:
var
h:hwnd;

begin
h:=findwindow('ConsoleWindowClass',nil);
PostMessage(h,WM_SETFOCUS,0,0);
PostMessage(h, WM_Keyup, Ord('p'), 1); 
PostMessage(h, WM_Keyup, byte(vk_Return), 1);
end;
Кстати, работает только Enter, а вот vk_space уже никого. Другие тоже.

Таки да, может подскажешь, как тогда вводить текст в консоль и забирать его из нее? Как правильно с ней работать?
p.s. Да, кстати, действия все производить надо через манипуляции с окном, а не через батники и shellexecute.

Последний раз редактировалось Homadrom; 05.05.2013 в 12:26.
Homadrom вне форума Ответить с цитированием
Старый 05.05.2013, 12:30   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Но опять ничего не вводится.
еще как вводится
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.05.2013, 12:38   #6
Homadrom
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 45
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
еще как вводится
Может тогда подскажешь в чем мой косяк может быть?
Homadrom вне форума Ответить с цитированием
Старый 05.05.2013, 13:00   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Спасибо. Но опять ничего не вводится. Да и попроще что-нибудь надо. Типа команды одной и все.
По-проще ничего нет. Других способов тоже нет.

Открываете процесс через OpenProcess или сами его создаете через CreateProcess, получаете пайпы чтения, записи, ошибок. Дальше пишите туда.

Ссылку вам дали.

FindWindow работает только в том случае если у вас только 1 консоль запущена, ибо у консолей ConsoleWindowClass - оконный класс 1 на всех.
Человек_Борща вне форума Ответить с цитированием
Старый 05.05.2013, 13:09   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в чем мой косяк может быть?
WM_Keyup нормально только в паре с WM_KEYDOWN работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2013, 13:24   #9
Homadrom
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 45
По умолчанию

Так, часть проблем решилась сменой версии Delphi. То есть то, что выслал - заработало. Но это лишь по одному символу передает.
Сейчас буду пробовать на Lazarus переносить все.

Цитата:
Сообщение от Stilet Посмотреть сообщение
WM_Keyup нормально только в паре с WM_KEYDOWN работает.
Работает все-таки.

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
По-проще ничего нет. Других способов тоже нет.
То есть, чтобы нормально работать с консолью, обязательно нужно её воссоздать у себя в приложении?

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
FindWindow работает только в том случае если у вас только 1 консоль запущена
Дак, мне только с одной и нужно работать.

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Открываете процесс через OpenProcess или сами его создаете через CreateProcess, получаете пайпы чтения, записи, ошибок. Дальше пишите туда.

Ссылку вам дали.
Забавно вот что. Попробовал эту процедуру в новой версии Delphi и стал жаловаться вот на эту строку:
Код:
OemToAnsi(Buffer, Buffer);
То есть ни в новой, ни в старой не работает.

p.s. Далее буду все делать на Lazarus. Кто что скажет, какие трудности в переносе этого дела туда будут?
Homadrom вне форума Ответить с цитированием
Старый 05.05.2013, 14:44   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...если научиться пользоваться справкой, то проблем меньше станет.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi, Java и cmd sariman Общие вопросы Delphi 1 26.07.2012 18:33
delphi и cmd Letnab Работа с сетью в Delphi 5 19.07.2012 19:53
cmd.exe в delphi Mangustik Общие вопросы Delphi 13 11.07.2011 11:06
[Delphi]Запуск из cmd с определнным параметром zotox Помощь студентам 2 29.08.2009 06:46