ďťż

Ładny brzuch

Więc chodzi mi o takie cuś, że odpalam ten program z poziomu mojego programu i wyjście tego programu(to je program konsolkowy) wychodzi "u mnie" albo jakoś aby przechwycić wyjście jego.

Na początku wymyśliłem takie coś
#include <iostream> #include <string> int main() { cout<<"Zaczynamy progs"<<endl; system("Bcdedit /v"); // Bcedit to program(polecenie) które chcę odpalić "u mnie" i chcę by jego wynik został przedstawiony w moim programie cout<<string(25, '*')<<"KONIEC"<<string(25, '*')<<endl; system("pause"); return 0; }
to jednak nie działa, tzn po skompilowaniu odpalam program i piszę coś takiego

'Bcdedit' is not recognized as an internal or external command, operable program or batch file.
czyli coś nie styka. Potem trafiłem na funkcję WinExec z windows.h ale jeszcze jej niesprawdziłem gdyż piszę pod VS 2005EE i musiałbym ściagać PSDK a ono zajmuje trochę. Podejrzewam że z WinExec dało by się odpalić te poleconko lecz nie wiem jak ustawić drugi parametr(tzn którą opcję wybrać) no i nie wiem jak przekierować rezultat tego programu na moje okno.

ps. komenda napewno dobra, bo odpalona ze zwykłego cmd działa
Użytkownik Edas edytował ten post 05 wrzesień 2006, 16:38


Tutaj znajdziesz opis funkcji WinExec i link do parametrów. Proponuję wywołać program z przekierowaniem wyniku do pliku tekstoweg, a następnie w twoim pierwszym programie odczytać ten plik, a potem ewentualnie go usunąć. Czyli na przykład:
WinExec(program.exe>>plik.txt, SW_HIDE);

U mnie to działa, na pewno masz dobre nazwy plików?


Tutaj znajdziesz opis funkcji WinExec i link do parametrów. Proponuję wywołać program z przekierowaniem wyniku do pliku tekstoweg, a następnie w twoim pierwszym programie odczytać ten plik, a potem ewentualnie go usunąć. Czyli na przykład:
WinExec(program.exe>>plik.txt, SW_HIDE);

tak znam tą stronę i już ją widziałem ale problem w tym, że nie bardzo umiem tego użyć ;) a twój sposób jest o tyle zły, że program musi "umieć wpuścić" wynik do pliku, zobacz np. wypisać wynik nslookup google.pl do pliku


U mnie to działa, na pewno masz dobre nazwy plików?
hmm dziwne, na windowsie 2003 odpaliłem inną komendę(nslookup google.pl) i rzeczywiście zadziałało. Prawdę powiedziawszy program piszę pod Vistą beta 2 i chcę napisać "łatwiejszą w użyciu" wersję tego bcdedit(jest to program do zmiań w boot managerze). Być może ten bcdedit jest jakoś zabezpieczony przed takim użyciem? Jak myślicie, jak to rozwiazać?




program musi "umieć wpuścić" wynik do pliku
No właśnie taka składnie to umie.
nie bardzo umiem tego użyć
Użyj dokładnie tak, jak napisałem.
Skoro działa ci polecenie system, to podaj w nim pełną ścieżkę do pliku bcdedit.exe, to czasem pomaga.


No właśnie taka składnie to umie.
Użyj dokładnie tak, jak napisałem.
Skoro działa ci polecenie system, to podaj w nim pełną ścieżkę do pliku bcdedit.exe, to czasem pomaga.

hmm to spróbuj to zrobić z nslookup ;P
zrobiłem tak jak mówiłeś (btw. źle to podałeś bo tam trzeba podać polecenie w "") a żaden (jeśli chodzi nslookup) plik się nie tworzy
Użytkownik Edas edytował ten post 05 wrzesień 2006, 20:41
#include <windows.h> int main(){ system("nslookup google.pl>nslookup.txt"); system("pause"); }
No dobra, tam coś nie działa z tym plikiem, ale to wyżej u mnie zadziałało.

http://search.msdn.m..._and_output.asp
Creating a Child Process with Redirected Input and output
Myślę że to będzie to :]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •