PDA

Visualizza la versione completa : [C++] funzione ShellExecute


7gigi7
11-10-2004, 18:12
Ciao a tutti... Nel mio programma in c++ volevo aprire un file con la funzione ShellExecute in modo che mi mostrasse l'applicazione con cui aprire tale file. Ho provato a guardare qui (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp) e qui (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/context.asp) e dice che per fare questra cosa bisogna passare come secondo argomento una stringa "openas" per non mi funziona :dh: non funzionano nemmeno le stringhe find e explore e properties ma solo quella di defaul cio "open" :bh: Sapete perch?

netarrow
11-10-2004, 19:36
#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:


#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:



#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.

:ciauz:

Loading