Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Wywoływanie programu przez inny program

Ostatnio zmodyfikowano 2011-04-17 17:49
Autor Wiadomość
Mrowqa
Temat założony przez niniejszego użytkownika
[C++] Wywoływanie programu przez inny program
» 2011-04-17 15:25:25
Witam!

Chciałem zapytać jak wywołuje się program przez inny program ( konkretnie jak to wygląda w kodzie ;D ). Jak przy takim wywołaniu podać argumenty wywołania oraz jak odebrać wartość zwrócona przez program ??
Pytam z ciekawości, tak jak wcześniej ;)
W win7 jak się wpisze w okno przy menu-Start program.exe -argument -innyArgument to odpala program ;) - nie sprawdzałem jeszcze argumentów - raczej sprawdzę niedługo :)

Pozdrawiam,
Mrowqa
P-30942
yoogi
» 2011-04-17 15:53:47
Możesz skorzystać z funkcji ShellExecute()

#Edit
C/C++
char * ARG[] = { "notepad", 0 };
execv( "c:\\windows\\notepad.exe", ARG );

No i oczywiście musisz dodać nagłówek process.h
P-30945
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-04-17 16:04:41
Poczytam o tym na pewno ;)
Ja odpalałem przed chwilą z Uruchom oraz cmd specjalnie przeze mnie napisany program, który podaje parametry wywołania ... Co ciekawe w cmd to ciekawie wyszło, oddawało sterowanie programowi, zamiast odpalić nowy ... ( Zmieniło nawet kolor w cmd - bawiłem się w odpalanie innych programów ;P )

PS aby odebrać wartość zwrócona przez program wystarczy przypisać ją do zmiennej ?
C/C++
int cos = ShellExecute( "jakiś program" ); // jeszcze parametry ....
Tak ?? :P

EDIT:
@up
aha ;)

Pozdrawiam,
Mrowqa
P-30952
yoogi
» 2011-04-17 16:08:24
C/C++
ShellExecute( NULL, "open", sciezka, NULL, NULL, SW_SHOWNORMAL );

W 3 parametr wpisujesz ścieżkę np. "c:\windows\system32\" lub ścieżkę internetową np. "http://google.pl/"

#edit
A co do wartości zwracanej to nie wiem, musisz poczytać.
P-30954
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-04-17 16:29:05
Co do execv:
Wywołuje nią specjalnie mój program, który wyświetla parametry wywołania. Działa ona podobnie jak w przypadku cmd --> oddaje sterowanie programowi, ale w przeciwieństwie do cmd już go nie oddaje, tzn w okienku programu wywołującego ukazuje się program wywołany, ale gdy on zakończy program, to zamyka okno, a nie kontynuuje programu wywołującego ;/
To normalne ??

Zaraz przetestuję drugą funkcję ...

EDIT:
nie podałeś nazwy pliku nagłówkowego, ale spróbowałem windows.h i zadziałało ;)
Otworzyło się okno, wywołanie umieściłem w cout << fun(); w momencie wywołania coś wypisało ;/ = to nie jest wartość zwrócona przez program ;(

Pozdrawiam,
Mrowqa
P-30958
yoogi
» 2011-04-17 16:34:58
Chodzi co o to, że włączasz program, uruchamia ci się notatnik i program się zamyka tak ?
P-30960
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-04-17 16:37:27
@up
Nie o to. Napisałem wyżej, że napisałem ( ale to brzmi :D ) swój program wypisujący parametry:
C/C++
#include <iostream>
#include <conio.h>
#include <process.h>
#include <Windows.h>
using namespace std;

int main()
{
    /*cout << "Wywolanie:\nC:\\Users\\R620\\Desktop\\My projects\\test_parametry\\Debug\\test_parametry.exe\n"
    "z parametrami: cos, 54.3, -t\n\n\n";
    char * ARG[] = { "cos", "54.3", "-t", 0 };
    int x = execv( "C:\\Users\\R620\\Desktop\\My projects\\test_parametry\\Debug\\test_parametry.exe", ARG );
    cout << "\n\n lala" << x;
    getch();*/
    cout << ShellExecute( NULL, "open", "C:\\Users\\R620\\Desktop\\My projects\\test_parametry\\Debug\\test_parametry.exe", NULL, NULL, SW_SHOWNORMAL ) << endl;
    system( "pause" );
}
Nie chciało mi się znów kod zmieniać ;) Chyba wiesz o co chodzi :D Mogę podać kod tego programu wywoływanego ... ale to raczej zbędne :D

PS to o co chodzi to jest to w komentarzu

Pozdrawiam,
Mrowqa
P-30961
yoogi
» 2011-04-17 16:39:30
Aha
P-30962
« 1 » 2 3
  Strona 1 z 3 Następna strona