[C++] Uruchamianie innych aplikacji

Jestem poczatkujacy jesli chodzi o programowanie. Ale chce sprobowac napisac program konsolowy, ktory bedzie uruchamial wybrany program zewnetrzny poprzez instrukcje switch.

Cos tam sprobowalem napisac, lecz wyswietla sie wiele bledow. A ja naprawde poczatkujacy i nie wiem co i jak. Chcialbym wiedziec co w tym kodzie jest zle.

Prosze o wyrozumialosc :wink:

Kod:

#include "stdafx.h"

#include 


#include 


void main()


{






   int nOpcja;




   std::cout << "Co chcesz zrobic? Wybierz!" << std::endl;


   std::cout << "1. Mozilla Firefox" << std::endl;


   std::cout << "2. Gadu-Gadu" << std::endl;


   std::cout << "3. Winamp" << std::endl;


   std::cout << "4. mIRC" << std::endl;


   std::cout << "5. Steam" << std::endl;


   std::cout << "6. Total Commander" << std::endl;


   std::cout << "7. Ventrilo" << std::endl;


   std::cout << "8. ESL Wire" << std::endl;


   std::cout << "9. Visual C++ 2005" << std::endl;


   std::cout << "0. Wyjscie" << std::endl;


   std::cin >> nOpcja;




   switch (nOpcja)


   {


         case 1: system( "\"C:\Program Files\Mozilla Firefox\firefox.exe"" );



					 break;



         case 2: system( "\"C:\Program Files\Nowe Gadu-Gadu\gg.exe""); 

					 break;


		case 3: system("\"C:\Program Files\Winamp\winamp.exe""); 

					 break;


			case 4: system("\"C:\program files\mIRC\mirc.exe""); 

					 break;


			case 5: system("\"C:\Program Files\Steam\Steam.exe""); 

					 break;


			case 6: system("\"C:\totalcmd\TOTALCMD.EXE""); 

					 break;


			case 7: system("\"C:\Program Files\Ventrilo\Ventrilo.exe""); 

					 break;


			case 8: system("\"C:\Program Files\EslWire\wire.exe""); 

					 break;


			case 9: system("\"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\VCExpress.exe""); 

					 break;




			case 0: std::cout << "Nacisnij dowolny klawisz aby zamknac program." << ; 

			 break;


         default: std::cout << "Nieznana opcja!" << ;


   }




   getch();


}

a tutaj log bledow:

Compiling...

4dvanced.cpp

.\4dvanced.cpp(58) : warning C4129: 'P' : unrecognized character escape sequence

.\4dvanced.cpp(58) : warning C4129: 'M' : unrecognized character escape sequence

.\4dvanced.cpp(58) : error C2001: newline in constant

.\4dvanced.cpp(61) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(64) : warning C4129: 'P' : unrecognized character escape sequence

.\4dvanced.cpp(64) : warning C4129: 'N' : unrecognized character escape sequence

.\4dvanced.cpp(64) : warning C4129: 'g' : unrecognized character escape sequence

.\4dvanced.cpp(64) : error C2001: newline in constant

.\4dvanced.cpp(65) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(67) : warning C4129: 'P' : unrecognized character escape sequence

.\4dvanced.cpp(67) : warning C4129: 'W' : unrecognized character escape sequence

.\4dvanced.cpp(67) : warning C4129: 'w' : unrecognized character escape sequence

.\4dvanced.cpp(67) : error C2001: newline in constant

.\4dvanced.cpp(68) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(70) : warning C4129: 'p' : unrecognized character escape sequence

.\4dvanced.cpp(70) : warning C4129: 'm' : unrecognized character escape sequence

.\4dvanced.cpp(70) : warning C4129: 'm' : unrecognized character escape sequence

.\4dvanced.cpp(70) : error C2001: newline in constant

.\4dvanced.cpp(71) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(73) : warning C4129: 'P' : unrecognized character escape sequence

.\4dvanced.cpp(73) : warning C4129: 'S' : unrecognized character escape sequence

.\4dvanced.cpp(73) : warning C4129: 'S' : unrecognized character escape sequence

.\4dvanced.cpp(73) : error C2001: newline in constant

.\4dvanced.cpp(74) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(76) : warning C4129: 'T' : unrecognized character escape sequence

.\4dvanced.cpp(76) : error C2001: newline in constant

.\4dvanced.cpp(77) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(79) : warning C4129: 'P' : unrecognized character escape sequence

.\4dvanced.cpp(79) : warning C4129: 'V' : unrecognized character escape sequence

.\4dvanced.cpp(79) : warning C4129: 'V' : unrecognized character escape sequence

.\4dvanced.cpp(79) : error C2001: newline in constant

.\4dvanced.cpp(80) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(82) : warning C4129: 'P' : unrecognized character escape sequence

.\4dvanced.cpp(82) : warning C4129: 'E' : unrecognized character escape sequence

.\4dvanced.cpp(82) : warning C4129: 'w' : unrecognized character escape sequence

.\4dvanced.cpp(82) : error C2001: newline in constant

.\4dvanced.cpp(83) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(85) : warning C4129: 'P' : unrecognized character escape sequence

.\4dvanced.cpp(85) : warning C4129: 'M' : unrecognized character escape sequence

.\4dvanced.cpp(85) : warning C4129: 'C' : unrecognized character escape sequence

.\4dvanced.cpp(85) : warning C4129: 'I' : unrecognized character escape sequence

.\4dvanced.cpp(85) : warning C4129: 'V' : unrecognized character escape sequence

.\4dvanced.cpp(85) : error C2001: newline in constant

.\4dvanced.cpp(86) : error C2143: syntax error : missing ')' before 'break'

.\4dvanced.cpp(90) : error C2059: syntax error : ';'

.\4dvanced.cpp(93) : error C2059: syntax error : ';'

Źle cytujesz ścieżki Windows.

Masz:

"\"C:\Program Files\Steam\Steam.exe""

A o ile się nie mylę to powinno być

"C:\\Program Files\\Steam\\Steam.exe"

Odwrotny ukośnik należy escape’ować.

dzieki bledy zniknely, ale teraz nie moge uzywac spacji w sciezce do aplikacji, poniewaz te aplikacje sie nie otwieraja

co zrobic aby uruchamialy sie aplikacje, ktore maja w sciezce spacje? Jesli mozna to prosilbym o podanie przykladowego kodu do jednej z moich aplikacji.

Podejrzewałem, że spacje mogą sprawiać problemy. Spróbuj więc dodać na początku i na końcu tekstu polecenie dodać znaki " (rzecz jasna poprzedzone znakiem odwrotnego ukośnika).

moglbys podac mi przyklad bo naprawde ja zielony jestem i nie wiem jak to ma wgladac, prosilbym jesli mozna na przykladzie jednej mojej aplikacji :wink:

Spróbuj czy to zadziała:

"\"C:\\Program Files\\Steam\\Steam.exe\""

ale teraz znowu te bledy:

1>------ Build started: Project: 4dvanced, Configuration: Debug Win32 ------

1>Compiling...

1>4dvanced.cpp

1>.\4dvanced.cpp(60) : error C2001: newline in constant

1>.\4dvanced.cpp(61) : error C2143: syntax error : missing ')' before 'break'

1>.\4dvanced.cpp(64) : error C2001: newline in constant

1>.\4dvanced.cpp(65) : error C2143: syntax error : missing ')' before 'break'

1>.\4dvanced.cpp(67) : error C2001: newline in constant

1>.\4dvanced.cpp(68) : error C2143: syntax error : missing ')' before 'break'

1>.\4dvanced.cpp(70) : error C2001: newline in constant

1>.\4dvanced.cpp(71) : error C2143: syntax error : missing ')' before 'break'

1>.\4dvanced.cpp(76) : error C2001: newline in constant

1>.\4dvanced.cpp(77) : error C2143: syntax error : missing ')' before 'break'

1>.\4dvanced.cpp(79) : error C2001: newline in constant

1>.\4dvanced.cpp(80) : error C2143: syntax error : missing ')' before 'break'

1>.\4dvanced.cpp(82) : error C2001: newline in constant

1>.\4dvanced.cpp(83) : error C2143: syntax error : missing ')' before 'break'

1>.\4dvanced.cpp(85) : error C2001: newline in constant

1>.\4dvanced.cpp(86) : error C2143: syntax error : missing ')' before 'break'

1>Build log was saved at "file://c:\Documents and Settings\NewAge~\Pulpit\proprogrammer4d\4dvanced\4dvanced\Debug\BuildLog.htm"

1>4dvanced - 16 error(s), 0 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

To podaj wiersze od 59 do 61, tu niema jasnowidzów. Ale z tego co mówi ci kompilator masz niezamknięte podwójne cudzysłowy, stawią na zbędny znak ‘’ w napisie.

ok, to caly kod http://wklej.org/id/137585/

prosilbym o caly przyklad dot. jednej aplikacji - jesli bede mial przyklad to poradzilbym sobie z reszta aplikacji - chyba :wink:

W każdym ciągu znaków brakuje Ci wyescape’owanego cudzysłowu

Masz ““TEXT”” zamiast ““TEKST”” - aby cudzysłów pojawił się w C-stringu trzeba go poprzedzić znakiem odwrotnego ukośnika.

tak jest, wreszcie zrozumialem ocb i dziala, thx!

Dodane 21.08.2009 (Pt) 11:10

Wszystko dziala taj jak potrzeba, program sie uruchamia po wybraniu interesujacego mnie programu otwiera sie on. Jednak mam teraz inny problem. Zrobilem petle “do” lecz nie dziala on tak jak bym chcial. Co prawda powraca do menu wyboru aplikacji, lecz dopiero gdy zamkne poprzednio wybrana aplikacje. Co nalezy poprawic w kodzie? Czy wogole jest taka mozliwosc?

Kod:

http://wklej.org/id/137622/

Za pomocą “system” tego nie zrobisz. Musisz dodać do includów , dolinkować odpowiednie liby z Windows (np. w MinGW opcja -mwindows) i użyc funkcji CreateProcess z WinAPI.

problem tkwi w tym, ze nie za bardzo wiem jak to zrobic ;/

Przecież wszystko tu jest opisane: http://msdn.microsoft.com/en-us/library … 85%29.aspx

A tu masz jeszcze przykład: http://msdn.microsoft.com/en-us/library … 85%29.aspx

Zajęło 2 s googlania. Tak trudno?

ok dzieki, sry ale nie moge narazie ogarnac sie w tym temacie, poczytam i sie dowiem, THX!

Dodane 24.08.2009 (Pn) 23:42

Mam teraz inny problem, postawnowilem uzyc funkcji shellexecute. Poczytalem troche, zainstalowalem PSDK, lecz przy kompilacji pojawia sie blad:

1>------ Build started: Project: 4dddNEW, Configuration: Debug Win32 ------

1>Compiling...

1>4dddNEW.cpp

1>.\4dddNEW.cpp(72) : error C2065: 'handle' : undeclared identifier

1>Build log was saved at "file://c:\Documents and Settings\NewAge~\Pulpit\proprogrammer4d\4dddNEW\4dddNEW\Debug\BuildLog.htm"

1>4dddNEW - 1 error(s), 0 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

a tu kod: http://wklej.org/id/139750/

naprawde prosze o wyrozumialosc :smiley: