Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ Odpalenie zewnętrznego programu


Rekomendowane odpowiedzi

Opublikowano

Siemano! Chciałem napisać program który mógłby odpalać inne programy znajdujące się w tym samym folderze (lub w jednym wybranym)


Chodzi o to by za pomocą funkcyjki "cin <<" móc wprowadzić nazwę programu np "notepad.exe" i po zatwierdzeniu enterem wpisany przez Nas program uruchomiłby się lub nie (jeżeli nie byłoby go w danym folderze)


Jakie propozycje :)?

Opublikowano

Znam to, z tym że :

[Error] cannot convert 'std::string {aka std::basic_string<char>}' to 'LPCSTR {aka const char*}' for argument '3' to 'HINSTANCE__* ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT)'

Jak przekonwertować stringa w LPCSTR?

// Ew. inne rozwiązanie

Opublikowano

W jaki przykładowy sposób przekonwertować to w kodzie za pomocą c_str? jestem zielony dlatego dopytuję :P

W sensie wpisać coś do stringa (cin) a następnie wpisany tekst przekonwertować do użycia

Opublikowano
std::string costam;
std::cin >> costam;
ShellExecuteA(NULL, "open", costam.c_str(), NULL, NULL, SW_SHOW);

Wieeeeelkie dzięki! Wszystko jasne :D

 

 

 

// Edit.

 

Jeszcze by nie spamić, jak utworzyć folder np na pulpicie nie znając nazwy użytkownika?

 

Da radę ją jakoś pobrać i wykorzystać w ścieżce np przy przenoszeniu pliku czy właśnie tworzeniu folderu?

Opublikowano

 

Musisz rozwinąć zmienną środowiskową.

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724265(v=vs.85).aspx

 

Ściezka do profilu użytkownika zapisana jest w zmiennej %UserProfile%

 

Więc pulpit będzie zawsze pod taką ścieżką:

%UserProfile%\Destkop\ 

Okej, plus minus zrozumiałem :P

 

 

Ostatnia rzecz.

 

Jak pobrać jakiś plik z sieci np z dropboxa (piszę taki jakby updater) 

 

Bawiłem się biblioteką <urlmon.h> 

No i średnio działa funkcja URLDownloadToFile chodzi o to że niby według niej plik jest pobrany ale niestety nigdzie go nie ma.

 

cURLa średnio ogarniam, zainstalowałem jego biblioteki do includów kompilatora i nic nie trybi.

Opublikowano

URLDownloadToFile działa bardzo dobrze, wiele razy używałem i nie było problemów. Pokaż swój kod.

ewentualnie możesz jeszcze winhttp do pobierania plików, ale to słabe rozwiązanie

curl'a użyj jeżeli nie przeszkadza ci dodatkowa biblioteka, ale jak na pobranie jednego pliku to overkill.

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano
int main()
{
		
	string link = "https://onedrive.live.com/linkdoprogramu";
	string save = "C:/folder/";

	if( URLDownloadToFile( NULL, link.c_str(), save.c_str(), 0, NULL ) == S_OK )
	     cout << link << " Aktualizacja pobrana pomyslnie! \n";
	else
	     cout << link << " Wystapil blad podczas pobierania! \n" ;
	
}

@ᕦ( ͡° ͜ʖ ͡°)ᕤ

 

Tak to wygląda oczywiście wyżej mamy "using namespace std;"

Opublikowano

curl musisz sam skompilować, to co skompilujesz wrzucasz do folderu lib a includy do folderu include

RAsfepN.png
Opublikowano
int main()
{
		
	string link = "https://onedrive.live.com/linkdoprogramu";
	string save = "C:/folder/";

	if( URLDownloadToFile( NULL, link.c_str(), save.c_str(), 0, NULL ) == S_OK )
	     cout << link << " Aktualizacja pobrana pomyslnie! \n";
	else
	     cout << link << " Wystapil blad podczas pobierania! \n" ;
	
}

@ᕦ( ͡° ͜ʖ ͡°)ᕤ

 

Tak to wygląda oczywiście wyżej mamy "using namespace std;"

 

Nic ci się nie pokazuje, ponieważ nie dałeś nazwy pliku docelowego, tylko sam folder.

Aby plik ci się pobrał poprawnie, musisz dodać nazwę pliku do zmiennej save, np:

string save = "C:/folder/pobrany_plik";

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

 

int main()
{
		
	string link = "https://onedrive.live.com/linkdoprogramu";
	string save = "C:/folder/";

	if( URLDownloadToFile( NULL, link.c_str(), save.c_str(), 0, NULL ) == S_OK )
	     cout << link << " Aktualizacja pobrana pomyslnie! \n";
	else
	     cout << link << " Wystapil blad podczas pobierania! \n" ;
	
}

@ᕦ( ͡° ͜ʖ ͡°)ᕤ

 

Tak to wygląda oczywiście wyżej mamy "using namespace std;"

 

Nic ci się nie pokazuje, ponieważ nie dałeś nazwy pliku docelowego, tylko sam folder.

Aby plik ci się pobrał poprawnie, musisz dodać nazwę pliku do zmiennej save, np:

string save = "C:/folder/pobrany_plik";

@ᕦ( ͡° ͜ʖ ͡°)ᕤ

 

Dziaaała! Wielkie dzięki!

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...