Annunci

Linkedin


Utilizzare ShellExecute

mercoledì, febbraio 23, 2011 @ 02:02 PM admin

La funzione API ShellExecute può lanciare un’applicazione o aprire un file in ambiente WIN32. E’ utile in molte situazioni in quanto evita di scrivere molte righe di codice per raggiungere lo stesso scopo come ad esempio inviare una e-mail (es. Inviare E-Mail con ShellExecute).

HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, nShowCmd);

Parametri:

  • hwnd: handle della finistra, questo valore può essere NULL se la chiamata non è associata a nessuna finestra
  • lpOperation: è una Pchar che contiene l’azione da eseguire, le azioni più comuni sono
    • edit: lancia l’editor e apre il relativo documento settato in lpFile all’interno dell’editor
    • explore: esplora una cartella specificata in lpFile
    • find: cerca nella directory specificata in lpDirectory
    • open: apre la voce specificata in lpFile
    • print: stampa un file specificato in lpFile, se quest’ultimo non è un file la funzione dà errore
  • lpFile: Pchar contenente il nome del file o dell’oggetto che deve essere eseguito a seconda di lpOperation
  • lpParameters: Pchar contenente i parametri che devono essere passati all’applicazione. Se lpFile è un documento deve essere impostata a NULL
  • lpDirectory: Pchar che deve contenere la directory di lavoro, se è NULL prende il valore dell’attuale directory di lavoro
  • nShowCmd: flag che specifica come deve essere visualizzata l’applicazione quando si apre, può assumere i seguenti valori: SW_HIDE,SW_MAXIMIZE,SW_MINIMIZE,SW_RESTORE, SW_SHOW, SW_SHOWDEFAULT, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE, SW_SHOWNA, SW_SHOWNOACTIVATE, SW_SHOWNORMAL

Valore restituito (intero):

  • 0 (zero):  errore di memora o di risorsa del S.O.
  • ERROR_FILE_NOT_FOUND: il file specificato non esite
  • ERROR_PATH_NOT_FOUND: il percorso specificato non esiste
  • ERROR_BAD_FORMAT: il file eseguibile non è valido
  • SE_ERR_ACCESSDENIED: il sistema operativo nega l’accesso al file
  • SE_ERR_ASSOCINCOMPLETE: il file associato è incompleto o non è valido
  • SE_ERR_DDEBUSY: la transazione DDE non può essere completata perché altre transazioni DDE sono in fase di elaborazione
  • SE_ERR_DDEFAIL: transazione DDE fallita
  • SE_ERR_DDETIMEOUT: transazione DDE non completata perchè la richiesta è andata fuori tempo limite
  • SE_ERR_DLLNOTFOUND: la DLL specificata non è stata trovata
  • SE_ERR_FNF: il file specificato non è stato trovato
  • SE_ERR_NOASSOC: nessuna applicazione è associata al file specificato
  • SE_ERR_OOM: memoria insufficiente per completare l’operazione
  • SE_ERR_PNF: la directory specificata non è stata trovata
  • SE_ERR_SHARE: violazione della condivisione

Ora vediamo alcuni esempi pratici dell’utilizzo della funzione ShellExecute

Lanciare un’applicazione

ShellExecute(Handle, ‘open’, PChar(’c:\delphi\delphi.exe’), nil, nil, SW_SHOW);

Aprire un file nel Blocco note

ShellExecute(Handle, ‘open’, PChar(’notepad’), PChar(’c:\test\readme.txt’), nil, SW_SHOW);

Stampare un documento

ShellExecute(Handle, ‘print’, PChar(’c:\test\test.doc’), nil, nil, SW_SHOW);

Aprire una pagina web

ShellExecute(Handle, ‘open’, PChar(’http://www.delphi-blog.it/’), nil, nil, SW_SHOW);

Esplorare una directory

ShellExecute(Handle, ‘explore’, PChar(’c:\windows)’, nil, nil, SW_SHOW);

Avviare un comando dal prompt di DOS:

ShellExecute(Handle, ‘open’, PChar(’command.com’), PChar(’/c copy file1 file2′), nil, SW_SHOW);

Aprire il client di posta predefinito per inviare una mail

ShellExecute(0, ‘open’,’mailto:info@delphi-blog.it’, nil, nil, SW_SHOWNORMAL);

Comments are closed.