[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鈥檕wa膰.

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鈥檕wanego cudzys艂owu

Masz 鈥溾淭EXT鈥濃 zamiast 鈥溾淭EKST鈥濃 - 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 鈥渄o鈥 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膮 鈥渟ystem鈥 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: