Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Вызов приложения из соновной программы
 
Требуется из программы вызвать утилиту certutil  и результаты её работы записать в файл, делаю следующим образом WinExec("certutil >> test.txt ",SW_RESTORE) но файла не появляется а команда отрабатывает. Писал батник для всего этого и запускал его из программы но так же чего хотел не получил. Где собака порылась подскажите? Заранее благодарю.
 
а когда батник из винды запускаешь, нормально?

если нет - собака зарыта в проге sertutil.
просто коряво написана.

или в какой винде запускаешь. Если младше XP - то естессно, не будет работать.

З.Ы.
есть технология захвата вывода программы из другой проги.

Запускаешь прогу через CreateProcess. Там параметр
lpStartupInfo, в нем заполняешь поле hStdOutput
своим значением: GetStdHandle(STD_OUTPUT_HANDLE).

Но опять же, если прога sertutil написана корректно, как консольная. А то может она вначале вызывает AllocConsole - и все: баста! плевала она на то, что ты ей подсунешь.
Нормальные проги используют GetStdHandle.

Кстати, запуская приложение через CreateProcess, можно даже подождать, пока прога не выполниться, что не дает ни WinExec, ни ShellExecute.
 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_inp­ut_and_output.asp
 
Андрей Титов, Ты не мог бы пояснить что в предложенном примере понимается под словом pipe?
 
По-моему, вам надо научиться пользоваться google

http://www.codenet.ru/progr/bcb/pipes.php
http://www.wasm.ru/article.php?article=1001021
 
Keva, попробуйте WinExec("cmd.exe /c c:\certutil.exe >> test.txt ",SW_RESTORE);
Или что-то в этом роде.По-моему именно так я когда-то запускал консольные приложения и батники (через cmd.exe /c ...).
 
Soldier of Fortune,
Итак тоже ничего не выходит!
 
а так
WinExec("cmd.exe /c c:\certutil.exe >> c:\test.txt ",SW_RESTORE);
;)
 
То же самое :(
 
ну тогда
2Крис Дьявол похоже прав
__
Но опять же, если прога sertutil написана корректно, как консольная. А то может она вначале вызывает AllocConsole - и все: баста! плевала она на то, что ты ей подсунешь.
___
если из командной строки не прокатывает
certutil > test.txt
то облом
 
Прога консольная, из командной строки прокатывает certutil > test.txt
 
WinExec("cmd.exe /A /C c:\\certutil.exe > test.txt ",SW_RESTORE);
Страницы: 1
Читают тему