Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C++] funzione ShellExecute

    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 e qui e dice che per fare questra cosa bisogna passare come secondo argomento una stringa "openas" però non mi funziona non funzionano nemmeno le stringhe find e explore e properties ma solo quella di defaul cioè "open" Sapete perchè?
    sssssire posssono esssere banditi!
    Uh, bandite femmine!

    (Robin Hood, versione disneyana)

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    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.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.