alternatywna funkcja system()

0

Poszukuje funkcji która mogła by zastąpić funkcje:

system()

chodzi mi o to że podam ścieżke do pliku, co poskutkuje otwarciem go przez OS,
funkcja system() ma taką wadę że najpierw otwiera się konsola(da się to wyłączyć?), a potem plik
dobrze by było jakby nie była związana z konkretnym OS czyli była uniwersalna pod tym względem
dobrze by było jakby coś takiego było w bibliotece Qt, ale mi się nie udało czegoś takiego znaleźć

0

Z biblioteki windows.h pod windowsa, pod inne OS nie znam.

WinExec("notepad.exe", SW_SHOW);
0

poczytaj o fstream a przepraszm do otworzenia pliku to nie znam :(

0

Może ShellExecute()? ale on też jest z windows.h

0

Mam pytanie odnośnie system(" ");
Wiecie może czy dało by się napisać program, który otworzył by rejestr

system("regedit");

a później usuwa jakiś klucz z rejestru???

0

Do stworzenia procesu w powloce mozesz uzyc fork, a nastepnie przy uzyciu, np. execl zastapic przestrzen pamieci utworzonego procesu przez proces, ktory podasz w funkcji execl.
Oczywiscie w funkcji execl nie podajesz adresu procesu w pamieci tylko nazwe pliku i argumenty do uruchomienia.
Te funkcje sa zdefiniowane w unistd.h, wiec i na windowsie powinno dzialac.
Co do tego, ze funkcja system() otwiera najpierw konsole to niewiem dlaczego tak sie dzieje, a jesli chodzi o exec** to nigdy nie probowalem uruchomic programu okienkowego, wiec niewiem jak to bedzie wygladac.
To czy program(plik binarny w formacie PE) ma sie uruchamiac z konsola, czy bez jest zdefiniowane w strukturze IMAGE_OPTIONAL_HEADERS w polu SubSystem. Z tego co pamietam wartosc 3 okresla ze ma sie uruchomic z konsola, ale nie jestem pewny, mozliwe ze 2. Zobacz winnt.h

Sproboj REG ADD sciezka_w_rejesrze /v nazwa /d wartosc lub REG DELETE. Mozesz dodac /f zeby zmiany zaszly bez potwierdzenia. Mozesz jeszcze regedit nazwa.reg, aby uruchomic plik reg ktory doda co tam chcesz do rejestru. Tak sie robi w plikach bat, wiec mysle ze da rade i przez system();
Do operacji na rejestrze w winapi masz RegCreateKey, RegQueryValue, RegGetValue itd. Na MSDN znajdziesz wiecej informacji na ten temat.

//q: chcialem wywalic ten watek, aleś go na koniec uratował;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1