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

CreateProcess

Ostatnio zmodyfikowano 2013-03-01 17:02
Autor Wiadomość
mikim110
Temat założony przez niniejszego użytkownika
CreateProcess
» 2013-02-28 14:59:59
Witam mam pytanie do forumowiczów.
Jak zamienić funkcję CreateProcess na funkcję _exec działającą pod Windowsem.
Chodzi o to żeby nie był tworzony nowy proces tylko powstały był nadpisywany w miejsce starego.

Dziękuję za pomoc
P-77304
xevuel
» 2013-02-28 15:26:30
C/C++
void exec( HANDLE hProcess, LPCTSTR lpApplicationName )
{
    TerminateProcess( hProcess );
    CreateProcess( lpApplicationName );
}
Taki mini pseudokod, zawierający nazwy potrzebnych funkcji.
P-77305
mikim110
Temat założony przez niniejszego użytkownika
» 2013-02-28 15:48:03
Dzięki za pomoc.
tylko z tego co się zorientowałem funkcja exec została zastąpiona przez _exec

[MSDN] _exec

czyli jak mam taką deklarację funkcji:
C/C++
unsigned long spawnApplication( const char * file, const char * parameters ) // *file to ścieżka
{
    //tutaj tworzony jest proces otwierający pewne aplikację
}
C/C++
CreateProcess( file,( char * ) parameters, NULL, NULL, TRUE,
NORMAL_PRIORITY_CLASS, NULL, NULL, & startupInfo,
& processInfo )
to jest moja funkcja tworzenia procesu
startupInfo to stuktura STARTUPINFO,
a processInfo to stuktura PROCESS_INFORMATION

jeśli chciałbym zamienić CreateProcess na jakąś funkcję z rodziny _exec, bądź na WinExec lub ShellExecute
to czy kod powinien wyglądać mniej więcej tak

C/C++
ShellExecute( 0, "open", file, NULL, NULL, SW_SHOW ); // ma prawo zadziałać?
lub tak:
C/C++
_execv( file, parameters ); //tutaj mam  cannot convert 'const char*' to 'const char* const*' for argument '2'

Ewentualne rady jak sobie z tym poradzić?
P-77308
xevuel
» 2013-02-28 15:54:59
Popraw swój post zgodnie z tym kursem: » KursyKurs STC kurs aby łatwiej było go przeczytać.

jeśli chciałbym zamienić CreateProcess na jakąś funkcję z rodziny _exec, bądź na WinExec lub ShellExecute
Dlaczego chcesz to zamieniać?
P-77310
mikim110
Temat założony przez niniejszego użytkownika
» 2013-02-28 16:07:50
Takie jest moje zadanie zamiana CreateProcess na wywołanie z "serii" _exec
Generalnie chodzi o to jak napisałem na początku żeby nie był tworzony proces potomny
P-77312
xevuel
» 2013-02-28 16:58:57
W linku który podałeś, masz przykład jak użyć _exec.
P-77316
mikim110
Temat założony przez niniejszego użytkownika
» 2013-02-28 17:28:29
A co z konwersją 'const char*' to 'const char* const*' for argument '2'?

Ale ok może napiszę wszystko co i jak. Mam plik .exe, który wywołuje plik .bin.
Jest to robione za pomocą CreateProcess a co za tym idzie tworzę proces potomny.
Teraz chciałbym aby .bin był nadpisywany w miejsce .exe.

i ostatnia rzecz czy po zamianie mam dalej stosować funkcje:

C/C++
CloseHandle( processInfo.hProcess );
CloseHandle( processInfo.hThread );

Przepraszam może za banalne pytania ale dopiero co zacząłem się bawić procesami w C++.
P-77319
xevuel
» 2013-02-28 17:49:14
P-77323
« 1 » 2
  Strona 1 z 2 Następna strona