codice:
#include <windows.h>
void main() {
ShellExecute(NULL, "open","C:\\autoexec.bat", NULL, NULL, 1);
}
così a me funziona, apre il file selezionato col suo programma predefinito.
Così lo apre come se avessi fatto modifica:
codice:
#include <windows.h>
void main() {
ShellExecute(NULL, "edit","C:\\autoexec.bat", NULL, NULL, 1);
}
e funziona.
L'api shellexecute ritorna un HINSTANCE da castare in int, e il valore cambia a seconda di come va a termine l'operazione, prova a vedere a te che errore da, io ho fatto un programma di test del genere:
codice:
#include <windows.h>
#include <iostream.h>
void main() {
int i = (int)ShellExecute(NULL, "openas","C:\\autoexec.bat", NULL, NULL, 1);
cout << i << endl << endl;
cout << endl << ERROR_FILE_NOT_FOUND
<< endl << ERROR_PATH_NOT_FOUND
<< endl << ERROR_BAD_FORMAT
<< endl << SE_ERR_ACCESSDENIED
<< endl << SE_ERR_ASSOCINCOMPLETE
<< endl << SE_ERR_DDEBUSY
<< endl << SE_ERR_DDEFAIL
<< endl << SE_ERR_DDETIMEOUT
<< endl << SE_ERR_DLLNOTFOUND
<< endl << SE_ERR_FNF
<< endl << SE_ERR_NOASSOC
<< endl << SE_ERR_OOM
<< endl << SE_ERR_PNF
<< endl << SE_ERR_SHARE << endl;
}
E da errore 31, ovvero SE_ERR_NOASSOC (se è maggiore di 32 è andato ok), SE_ERR_NOASSOC dice che non c'è nessun programma associato all'estensione del file o e stata richiesta l'operazione di stampa su un tipo di file non adatto.