Lanciare applicazioni in c++

di il
3 risposte

Lanciare applicazioni in c++

Salve,


spiego brevemente ciò che vorrei fare. Io vorrei lanciare un file batch e due
applicazioni windows (una alla
volta e senza essere in esecuzione contemporaneamente) mentre è in esecuzione un
codice C++, realizzato con Microsoft Visual C++ versione 1.0 (dico bene: versione 1.0), in modalità "QuickWin Application" (o Win32 Console Application). In pratica mentre è in esecuzione il programma principale, a un certo punto, si deve avviare la prima applicazione (il file batch) quindi, effettuate delle operazioni con essa, la si chiude (la chiusura la posso fare io manualmente) e il programma principale prosegue da dove si era interrotto. Ad un'altro punto il programma principale s'interrompe di nuovo e lancia la seconda applicazione e il discorso si ripete. Ho provato le istruzioni
system(), spawn() ed exec() inserendo le include

<stdlib.h>
<stdio.h>
<process.h>

e in tutti e tre i casi la compilazione mi da i
seguenti 2 errori:

" 'system' : undeclared identifier "
" term does not evaluate to a function "

(naturalmente la prima riga è relativa al caso della funzione system ma è
analoga negli altri casi). Gli errori precedenti a cosa sono dovuti? Queste ultime tre
istruzioni sono compatibili con la modalità "QuickWin Application"? Se si quale delle tre
fa al mio caso? Inoltre quale potrebbe essere un esempio di codice che lancia prima un file batch
situato ad esempio in "C:\Documenti" e poi un'applicazione windows situata nella stessa directory?
Chiedendo un pò in giro, mi hanno suggerito l'istruzione ShellExecute( ). Quest'ultima però funziona solo in modalità "Windows Application". In tale modalità ho eseguito il codice


------------------------

#include <windows.h>
#include <shellapi.h>

int main( )

{

ShellExecute(NULL, NULL, "C:\\Programmi\\Accessori\\Wordpad.exe", NULL, NULL, SW_SHOWNORMAL);

return 0;

}

--------------------------


e il Wordpad di windows mi viene lanciato a meraviglia. Lo stesso codice non funziona in modalità "QuickWin Application", in particolare la compilazione va a buon fine mentre il link mi da l'errore seguente:

" 'SHELLEXECUTE' : unresolved external "

Io ho la necessità di lavorare in modalità "QuickWin Application".
Chiedo un gentile parere. Grazie

3 Risposte

  • Re: Lanciare applicazioni in c++

    Non so system(), ma spawn() ed exec() non esistono!

    Mi spiego meglio:
    Entrambe le funzioni hanno diversi modi per essere richiamate a seconda che gli passi argomenti fissi, array di parametri e similari...
    Se conosci i parametri da passare allora devi usare spawnl() o execl(), altrimenti ci sono spawnv() ed execv() e similari... ti rimando alla documentazione appropriata...

    In praticolare, comunque, le funzioni spawn() terminano l'applicazione chiamante, per cui forse vorrai utilizzare exec()...

    Ciaociao :)

    Venite a visitarci qui: http://spazioinwind.libero.it/bottomapsoftware
  • Re: Lanciare applicazioni in c++

    Ho scritto spawn() ed exec() per brevità ma in realtà quando le ho provate ho utilizzato la dicitura corretta ovvero spawnv(), execv() etc ma non hanno funzionato.
  • Re: Lanciare applicazioni in c++

    Forse allora il problema dipende dal VC1.0... forse non sono presenti nei file includes (spawn ed exec sono in process.h) e di conseguenza nella .lib standard...

    In caso prova ad aprire process.h nella cartella degli include del compilatore e controlla (al limite fai una ricerca nel file) se c'è il prototipo della funzione... se non c'è abbiamo risolto il problema, altrimenti prova ad includere anche <windows.h> (anche se sei in console app)...

    Facci sapere se risolvi il problema
    Ciaociao

    Venite a visitarci qui: http://spazioinwind.libero.it/bottomapsoftware
Devi accedere o registrarti per scrivere nel forum
3 risposte