Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Create Process

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.10.2005, 17:48 Uhr
Dark Listener



Nachdem ich jetzt ganz auf .Net umgestiegen bin, brauche ich noch ein Setup-Programm für meine Progs. Das Programm ermittelt, ob und welches .Net-Framework installiert ist und installiert dann das passende. Das ist hier jedoch irrelevant. Fakt ist: Im InitDialog wird geprüft in welchem Ordner bzw. Laufwerk sich die (Main) .exe befindet und dann wird der Net-Framework-Installer gestartet.

Wenns so funktionieren würde....


C++:

/////////////////////////////////////////////Pfad der .exe ermitteln////////////////////////////
char szBuffer[MAX_PATH+2];
char szPfad[MAX_PATH+2];
char *pFilename;

GetModuleFileName (NULL, szBuffer, MAX_PATH);
//Path der exe ermitteln
GetFullPathName (szBuffer, sizeof (szBuffer), szPfad, &pFilename);
szPfad[pFilename-szPfad] = '\0';
//Name der .exe abziehen
//Danke RedEagle nochmal !

a =strlen(szPfad);
strncpy(szPfad+a,"dotnetfx.exe",12);


/////////////////////////////////////////.exe starten/////////////////////////////////////////////
STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    // Start the process.
    if( !CreateProcess( NULL,  
        szPfad,          
        NULL,            
        NULL,            
        FALSE,            
        0,                
        NULL,            
        NULL,            
        &si,              
        &pi )            
    )
    {
        MessageBox( NULL,"Das DotNet-Framework 1.1 konnte nicht im Installationsverzeichnis gefunden werden." ,"FEHLER",MB_OK);
        SendMessage(hDlg,WM_CLOSE,0,0);
    }

    // Wait until process exits.
    
    WaitForSingleObject( pi.hProcess, INFINITE);
    
    // Close process and thread handles.
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );



Also das Problem ist, dass ich immer die von mir definierte Fehlermeldung auf den Bildschirm gehauen kriege. Wenn ich mir aber szPfad während der Ausführung anschaue scheint alles okay zu sein. Nur die / sind andersrum als sie sein sollten. Kann das den Fehler verursachen ? Gibts eine Funktion, die die / in \\ umwandelt ?


Danke !!!
--
Look at my brand new Logo! And on the following page with my own tutorial there !!!
www.oyla7.de/cgi-bin/designs/medusa_schwarz/index.cgi?page=text&id=64301492&userid=89990972
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.10.2005, 19:20 Uhr
Spacelord
Hoffnungsloser Fall


Hast du mal probiert szPfad als ersten Parameter zu übergeben?

Ansonsten:

C++:
strncpy(szPfad+a,"dotnetfx.exe",12);


"dotnetfx.exe" = 12 chars.


Zitat von strncpy:

....
Copies the first num characters of src to dest.
No null-character is implicitly appended to dest after copying process. So dest may not be null-terminated if no null-caracters are copied from src.




Deine Zeichenkette ist also nicht nullterminiert.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.10.2005, 19:42 Uhr
Dark Listener



Hilft alles nix.
Die Funktion und ihre Nutzung stimmen. Wenn ich z.B. "C:\\test.exe" als parameter angebe funzt.

Danke trotzdem hat jemand noch ne Idee ?
--
Look at my brand new Logo! And on the following page with my own tutorial there !!!
www.oyla7.de/cgi-bin/designs/medusa_schwarz/index.cgi?page=text&id=64301492&userid=89990972

Dieser Post wurde am 13.10.2005 um 19:43 Uhr von Dark Listener editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.10.2005, 19:51 Uhr
Spacelord
Hoffnungsloser Fall


Hast du denn deinen String jetzt nullterminiert?
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.10.2005, 14:23 Uhr
Dark Listener



Ja.
Hab's jetzt auch nochmal mit folgenden Parametern versucht:

a) C:/test.exe funzt
b) C:\test.exe funzt nicht - ebenso ein string kommt als szPfad raus
c) C:\\test.exe funzt

liegt also wirklich daran.
Ich könnt jetzt ne eigene Funktion schreiben, die dei \ verdoppelt, aber so was musses ja schon vorgefertigt geben ???

Danke
--
Look at my brand new Logo! And on the following page with my own tutorial there !!!
www.oyla7.de/cgi-bin/designs/medusa_schwarz/index.cgi?page=text&id=64301492&userid=89990972

Dieser Post wurde am 14.10.2005 um 14:23 Uhr von Dark Listener editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: