Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизКомандный процессор Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c