CreateProcess Problem

12/15/2009 23:01 backo#16
Nein, Ich habe nicht gesagt das es deswegen passiert. Ich habe lediglich ein anderen fehler angedeutet. Ich sehe nirgends wo du _tcscpy benutzt, du meinst wahrscheinlich _tcscat. Ein anderer flüchtichkeits fehler ist dass du in else if(lac == 2) .. _tcscat(path2,param2); schreiben wolltest. Leider erkenne ich nicht den "bösen" fehler, da ich selbst sowas wie _tcscat nie vorher benutzt habe, die funktion ist nicht mal in der MSDN dokumentiert, schlimm.
12/15/2009 23:37 MrSm!th#17
1. habe ich schon geändert
2. auch _tcscpy hm habe ich echt nicht drin; ok hatte ich aber vorher^^ ok dann meinte ich _tcscat; ist aber das gleiche mit dem _tcscat und _tcscat_s
3. dann suchst du nicht richtig. ich weiß ganz genau, dass die funktion da drin sein muss. da steht nämlich auch die Warnung drin, man solle doch _tcscat_s benutzen!
4. hm....echt komisch ich nämlich auch nicht. ich werde wohl echt mal die anderen funktionen probieren; kann ja sein, dass zwar die string korrekt geschrieben werden, aber etwas anderes dabei überschrieben, auch wenn ich es mir nicht erklären kann
5. oh danke; das mit 2x param1 habe ich gar nicht gesehen^^
12/16/2009 21:00 Adroxxx#18
Keine Ahnung ob ich jetzt alles Richtig verstanden habe.
Ich würde lpCurrentDirectory auf NULL belassen.

Du kannst einfach den Pfad + Anwendungsname in lpCommandLine packen.

So habe ich es auch gemacht.


PHP Code:
TCHAR cDic[BUFSIZE];
    
CString strFilename;

    
strFilename.Format(_T("S4Client.exe"));
    
GetCurrentDirectoryW(BUFSIZE,cDic);
    
CString sDic CString(cDic);

    
sDic.Format(_T("%s\\%s -rc:eu -lac:ger -auth_server_ip:217.110.102.94"),cDic,strFilename);

    
STARTUPINFO si;
    
PROCESS_INFORMATION pi;

    
ZeroMemory( &sisizeof(si) );
    
si.cb sizeof(si);
    
ZeroMemory( &pisizeof(pi) );


    
LPTSTR szCmdline sDic.GetBuffer(0);

    if (
CreateProcess(NULL,szCmdline,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi) != false) {
        
sDic.ReleaseBuffer();

    }else {

        
AfxMessageBox(_T("File not Found!"));
        
m_browse();
    } 
Das sollte auch mit dem Pfad funktionieren den du aus der Registry ziehst.
Weil bei mir ruft der auch falls, der Launcher sich nicht direkt im Verzeichnis befindet die m_browse() auf, wo so ein "Browse" Fenster kommt und man dann einfach die S4Client auswählen kann.


Hier mal die m_browse() (ich weiß dass der code rendundant ist und mies, aber war nur für einen kleinen test launcher :P )