#include <process.h>
#include <windows.h>
#include <shellapi.h>
#include <stdio.h>
#include <iostream>
#define FILE "ipconfig.exe"
using namespace std;
void main()
{
char outbuff[256];
char buff[] = " /all";
GetSystemDirectory(outbuff,256);
lstrcat(outbuff,"\\ipconfig.exe");
_execl(outbuff,FILE,buff,NULL);
MessageBox(HWND(0),"title","hello world!",MB_OK);
exit(0);
}
Как завершить процесс запущенный execl?
Код:
На заголовочные файлы не смотрите я просто многое пробовал и не стал подчищать чтобы выложить сюда :) А проблема такая. Программа эта для консоли. Запускаю её и как мне нужно появляется IPCONFIG /ALL, но мне нужно пропарсить ответ ipconfig и выдрать например ip шлюза моего, так вот как мне пройти дальше по программеи завершить процесс запущенный execl чтобы появился дальше MessageBox. Чтото я застрял на этом месте. Подскажите кто знает :)
Но гораздо проще получить инфо самому. Для этого надо использовать IPHLPApi (iphlpapi.dll). Например такие как GetAdaptersInfo, GetIpAddrTable и др.
Все они хорошо, с примерами типичных задач описаны в MSDN.
Спасибо тебе за ответ, но мне не нужно выдирать ip это привёл для примера просто чтобы была понятн задача. То есть мне нужно запусить стандартное приложение входящее в поставку дистрибутива и потом пропарсить его ответ и после парсинга то что мне нужно записать в файл. И я не знаю как это реализовать потому что застрял на завершении процесса.
Запускай с помощью CreateProcess и терминируй с помощью TerminateProcess.
Тогда смотри пример в MSDN для функции CreatePipe. Там создаеться процесс, который вводит-выводит в пайп. О завершении процесса можно узнать с помощью WaitForSingleObject(hProcess,...);
Эх парни я конечно понимаю может быть для вас легко это понять но мне бы хоть маленький кусман кода. Так просто легче разобраться. Если кого то не затроуднит сдеать например консольную прогу которая выводит просто hello world john, а через вторую программу как раз запустить первую и пропарсить то что она выдаёт и выдрать hello и john например. Если кому то не трудно это сделать то я буду очень презнателен.
0. MSDN - либо на дисках, либо http://msdn2.microsoft.com/en-us/library/default.aspx.
1. Разобраться как работать с ReadFile/WriteFile.
2. Разобраться с CreateProcess.
3. <b>Смотришь пример</b> к функции CreatePipe. Переделываешь.
4. Потом делаешь WaitForSingleObject(hProcess, INFINITE), где hProcess - хендл созданного тобой процесса. Вернеться управление твоему потоку когда процесс завершиться. Все что он вывел, будет записано в пайп, но считывать лучше в отдельном потоке.
Вот и все. Уж не обессудь, но используються хорошо описанные функции, на которые достаточно примеров в майкрософтовской документации, поэтому писать лень :)
Ладно спасибо почитаю, поищу. Если что тебе в личку напишу :)