Veröffentlicht 4. September 200718 j hallo, Ich versuche gerade von einem Programm andere Programme zu starten. Die Informationen für Pfad etc werden korrekt aus einer Datei gelesen. Mein Problem allerdings ist die Parameterübergabe bei CreateProcess - die will irgendwie nicht: int CApplication::startApplication() { int result = 0; if ((CSettings::getRunLevel() >= m_neRunLevel) || (CSettings::getRunLevel() == -1)) { if (m_lpeFile != _T("")) { [B]result = CreateProcess( (LPCTSTR) m_lpeFile, m_lpeParam.GetBuffer(1024), NULL, NULL, FALSE, 0, NULL, NULL, &m_sSi, &m_sPi);[/B] WaitForSingleObject( m_sPi.hProcess, m_neWaitFor*1000 ); } } m_beIsRunning = (result != 0); return result; } Lt. MSDN müsste das (eigentlich) funktionieren, glaub ich. Ich hab das mal mit Notepad getestet. Dieses wird gestartet, allerdings wird der Parameter einfach nicht übergeben. (Der Parameter ist eine externe Datei, aber lt. Debugger stimmt der Wert von m_lpeParam) Anmerkung: Wenn ich den Pfad mitsamt Parameter-Paramter als ersten Parameter übergebe, startet er erst garnicht.
4. September 200718 j Autor So, nach langem hin und her hab ichs dann noch rausgefunden. result = CreateProcess( (LPCTSTR) m_lpeFile, (m_lpeFile + _T(" ") + m_lpeParam).GetBuffer(1024), NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &m_sSi, &m_sPi); Ich vergaß (im Sinne von vergessen), dass der erste Parameter (immer) die Anwendung selbst sein muss.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.