Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Командный процессор   Найти похожие ветки 

 
Alex870   (2004-09-01 11:54) [0]

Уважаемые знатоки API!
У меня такая задача: открыто консольное окно (command.com или cmd.exe в зависимости от системы) моя программа должна набрать и запустить определенную команду соответствующего командного процессора, т.е. ,например, после C:>\ набрать dir и, чтобы в этом окне она отработала. Запускается этот процессор не из моей программы, поэтому запустить его с опр. параметрами я не могу, да и команд я хочу дать не одну, а несколько. Зарание спасибо!


 
Digitman ©   (2004-09-01 12:21) [1]

для начала контрвопрос - как ты намерен решить (либо уже решил) проблему с идентификацией именно требуемого процесса, создавшего именно требуемое конс.окно  ? ведь таких процессов в общем случае м.б. более одного .. и все они в списке процессов будут выглядеть просто как, например, cmd.exe


 
Alex870   (2004-09-01 12:58) [2]

Честно говоря я не стал вдаваться в подробности, посчитав их ненужными. Дело в том, что у меня не совсем командный процессор, а окно программы эмулирующее его, как пример - файловый менеджер far (я думаю всем известный) - он имеет Caption, и я думаю, что и окна cmd (command) можно отличить друг от друга, в зависимости от того, что в них запущено (где-то код видел).


 
Digitman ©   (2004-09-01 13:17) [3]

я что-то ни шута не понял ..


> не совсем командный процессор, а окно программы эмулирующее
> его


что значит "эмулирующее" ? ты же сказал, что процесс cmd.exe стартован другим процессом, а не твоим ?


 
enel ©   (2004-09-01 13:39) [4]

Почему бы тебе не воспользоваться bat-файлом?


 
Alex870   (2004-09-01 17:21) [5]

Извините за некорректно поставленный вопрос!
Поставлю его по другому. Во-первых bat-файл непойдет, т.к. это окно не моё, и перезапускать его нельзя.Во-вторых я конечно неправ на счет слова "эмулированный", ведь cmd и command это уже эмуляция ms-dos. Просто запущена программа типа Far, а мне там в командной строке необходимо много чего набрать и исполнить, объем большой и появилась мысль автоматизировать ввод команд и их запуск, но так как окно это создано не моей программой, я не знаю как это сделать...


 
GrayFace ©   (2004-09-01 17:24) [6]

Вариант: эмулировать нажатия клавиш


 
Alex870   (2004-09-01 17:38) [7]

Отличная мысль, мне она тоже приходила в голову, но хотелось как бы грамотнее решить, и еще мне там нужно реализоать ввод данных в файл, типа: echo ...данные.. > otchet.txt, а вот здесь клавишь не хватит, чтобы ввести набор байт...


 
BiN ©   (2004-09-01 17:50) [8]

>>Alex870   (01.09.04 17:38) [7]

используй
WriteConsoleInput

Только сдается мне, что задача у тебя поставлена криво, ты бы определился, ЧТО ИМЕННО тебе надо


 
Alex870   (2004-09-01 20:18) [9]

>>BiN ©   (01.09.04 17:50) [8]
Спасибо за ответ, даже нашел код (пример) использования этой функции, однако чего-то не выходит, к тому же (повторюсь) консольное приложение я запускаю не из своей программы, поэтому с унаследованными описаниями ввода-вывода уже косяк. А, что именно мне надо: надо сделать примерно тоже самое, что в Windows каким-то образом уже реализовано, т.е. допустим есть какой-то буфер обмена и консольное приложение с командной строкой вида "С:\>" нужно вставить так "C:\> Echo содержимое буфера > otchet.txt" и потом естественно сэмулировать нажатие Enter, и уж было бы совсем хорошо, если отследить конец этой операции, т.е. появление опять "C:\>", чтобы продолжить в том же духе.


 
KSergey ©   (2004-09-02 07:30) [10]

> [9] Alex870   (01.09.04 20:18)

Это уже все поняли
Не понятно нафиг такое извращение: искать именно открытое окно и в нем чего-то эмулировать. Чем не подходит новое, созданное собственными силами и, потому, подконтрольное?


 
Дмитрий Ботвин   (2004-09-02 08:52) [11]

KSergey тебе дельный совет дал - не глумись над самим собой!!!
Запускай всё что хош из своего приложения и управляй им как тебе
вздумается :-))))



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
1-1095765434
demidoff
2004-09-21 15:17
2004.10.10
Простой вопрос новичка про указатели


4-1094730245
FGH
2004-09-09 15:44
2004.10.10
Debug API


1-1096159405
Leaner
2004-09-26 04:43
2004.10.10
Ошибка: C0000008 в строке CloseHandle(FHand);


6-1091143428
rosl
2004-07-30 03:23
2004.10.10
сообщение


1-1095888698
Константинов
2004-09-23 01:31
2004.10.10
Подскажите, как правильно работать со свойствами-массивами