Forum > Generale

Windows: aprire file con applicativo di default

(1/2) > >>

bonmario:
Ciao a tutti,
ho sempre usato "LCLIntf.OpenDocument" per aprire un file con l'applicativo associato alla sua estensione.
Oggi, però mi hanno fatto notare che se non ho nessun applicativo associato a quell'estensione, "LCLIntf.OpenDocument" non fa niente, mentre se un utente fa il "doppop click" da esplora risorse su quel file gli esce la finestrella con cui può scegliere con quale applicativo aprire il file.

Al momento ho bypassato il problema creando un file bat che esegue la seguente istruzione:

--- Codice: ---
start <NomeFile>
--- Termina codice ---

ma mi piacerebbe sapere se c'è già qualche istruzione che fa la stessa cosa.

Grazie in anticipo, Mario

xinyiman:
Purtroppo io non mi ci sono mai imbattuto, magari qualche altro utente.

Microges2000:
Usa OpenDocument (unit LCLIntf) e passagli il file da aprire, funziona un po' con tutto
L'ho provato con doc, pdf, txt, jpg, html, java ed anche con indirizzi web

bonmario:
Grazie,
è proprio quello che uso già (vedi il mio primo post).
Il problema è questo: se io uso OpenDocument per aprire un pdf sul mio PC, su cui ho associato l'estensione pdf ad Acrobat Reader, mi apre il file.
Se lo faccio su un PC su cui non è stata associato nessun programma all'estensione pdf, non succede nulla.
Se invece faccio doppio click sul file pdf, mi esce la finestrella con cui Windows mi chiede con quale applicativo voglio aprire quel file. Questo è il comportament che vorrei avere e che adc oggi ottengo solo col metodo che ho scritto nel primo post.

Ciao, Mario

Stilgar:
Mario .. quello che indichi tu come "voluto" è un comportamento di Explorer ... mica del "kernel" ...
Devi aprire anche tu la finestrella delle applicazioni associate.

--- Codice: ---
if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    ws := UTF8Decode(AURL);
    Result := ShellExecuteW(0, 'open', PWideChar(ws), nil, nil, SW_SHOWNORMAL) > 32;
  end
  else
  begin
    ans := Utf8ToAnsi(AURL); // utf8 must be converted to Windows Ansi-codepage
    Result := ShellExecute(0, 'open', PAnsiChar(ans), nil, nil, SW_SHOWNORMAL) > 32;
  end;   

--- Termina codice ---
Questo è il pezzo di codice che apre il documento tramite la shell.
Info sull'api di window.

--- Codice: ---
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx

--- Termina codice ---

Stilgar

edit:
Sarebbe da indagare nella direzione:
SE_ERR_ASSOCINCOMPLETE

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa