pawelek5
(pawelek5)
25 Sierpień 2013 18:09
#1
Witam,
Co zrobić by mój konsolowy program napisany w C++ uruchamiał zewnętrzny program, który mu wpiszę w strumieniu wejścia?
Próbowałem już takie coś, lecz nie działa…
if (mozliwosc == "y")
{
std::cout << "Wpisz ścieżkę programu i jego nazwę." << std::endl;
std::string dane_programu;
std::cin >> dane_programu;
}
//...
ShellExecuteA(0, 0 ,dane_programu,0,0,SW_SHOW);
Razi
(Razi)
25 Sierpień 2013 18:14
#2
std::system(dane_programu.c_str());
?
Rolek0
(Rolek0)
25 Sierpień 2013 18:16
#3
Wkleiłeś dwa niepowiązane ze sobą kawałki kodu (zmienna dane_programu w pierwszym kawałku jest lokalna w bloku if , więc drugi musi używać innej zmiennej dane_programu ), więc trudno powiedzieć co zrobiłeś źle.
pawelek5
(pawelek5)
25 Sierpień 2013 18:31
#4
A no tak…
Dodałem zmienną przed main, lecz dalej kompilator podkreślał błąd w tym ShellExecuteA .
Zamiast ShellExecuteA wkleiłem std::system i teraz działa…
A jaki by był kod dla zamknięcia aplikacji, który współpracuje ze strumieniem wejścia?
– Dodane 25.08.2013 (N) 20:36 –
Wtedy gry sprawdzałem, czy std::system działa wpisałem notepad.exe.
Teraz wpisałem plik z lokalizacją i nie działa…
Razi
(Razi)
25 Sierpień 2013 18:43
#5
W lokalizacji używałeś ukośników / czy ? Windows używa , ale jak chcesz podawać tak ścieżkę w kodzie, to musisz pisać \.
pawelek5
(pawelek5)
25 Sierpień 2013 18:50
#6
Wpisywałem na parę różnych sposobów nie działało. Spróbowałem na innym pliku i zadziałało, teraz jeszcze raz chcę to zrobić - nie działa…
– Dodane 25.08.2013 (N) 20:54 –
I znowu. Zadziałało i teraz znowu nie działa…
– Dodane 25.08.2013 (N) 21:16 –
Podsumowując: raz działa, raz wyświetla taki o to komunikat…