QProcess setEnvironment non ha alcun effetto?
Domanda
Sto cercando di avviare un programma usando QProcess (Qt4.4 su vista64bit, in via di sviluppo in MSVC2005). Il programma non è nel percorso, quindi ho provato ad aggiungere la directory in cui si trova il programma all'ambiente QProcess, in un modo simile a quello che viene dimostrato nella documentazione di QProcess :: setEnvironment .
Sfortunatamente il programma non si avvia, apparentemente perché l'eseguibile non può essere trovato nel percorso. È un problema noto? Faccio qualcosa di sbagliato?
Ho verificato che il percorso viene impostato stampando l'ambiente QProcess dopo aver aggiunto il percorso.
Esistono due soluzioni alternative: la prima è avviare il programma con il percorso completo, la seconda è aggiungere la directory al percorso prima di avviare l'eseguibile, ma non voglio usare neanche.
Soluzione
QProcess :: setEnvironment () influisce solo sull'ambiente del processo generato, non sul contesto in cui viene gestita la generazione. È necessario modificare l'ambiente corrente in modo da poter trovare l'app che si sta generando (usando :: SetEnvironmentVariable () per cominciare).
La ricerca del file dell'applicazione è descritta nella documentazione di CreateProcess API.
Controlla questo puntatore per uno scenario di esempio.