Newsgroup: it.comp.appl.access
Titolo: Avviare il programma associato di default

Ciao,
in una maschera ho inserito un campo Immagine non associato.
L'immagine (un JPG) viene caricata in tempo reale dal disco, modificando 
image.Picture="nomefile".
Quello che voglio ora è fare in modo che, facendo doppio click 
sull'immagine, si apra il programma di grafica associato ai file JPG.
Dal prompt dei comandi di Windows è sufficiente fare "start nomefile.jpg" e 
il programma parte.
Ma in VBA se lancio lo stesso comando dalla funzione Shell(..., ...) mi dà 
un errore di file non trovato. E infatti "start" è un comando di sistema e 
non esiste come file.
Al momento ho risolto esplicitando il percorso completo del programma che 
poi richiamo con Shell().
Però il database gira su una LAN e utenti diversi possono avere programmi 
diversi installati, quindi la mia soluzione non funzionerebbe.
Come faccio ad aprire un file JPG usando il programma associato di default?
Ciao
Marco 

"napo" <na...@NOPRIVATEMESSAGE.com> ha scritto nel messaggio
news:e0tpmq$dmb$1...@news.tiscali.fr...

Puoi usare l'API ShellExecute. Qui trovi un esempio:
http://www.mvps.org/access/api/api0018.htm
--
Ciao
Galliano.

 
http://www.mvps.org/access/api/api0018.htm
Purtroppo su sitocomune e donkarl non avevo trovato nulla.
Ora mi guardo l'API.
Ciao
Marco 

 Marco
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------

 (di formato txt, pdf, tif ecc.) direttamente da un db access (2)".
A dire il vero avevo guardato solo nella sezione Modules.
Ciao
Marco 

"napo" <na...@NOPRIVATEMESSAGE.com> ha scritto nel messaggio
news:e0tuhm$hme$1...@news.tiscali.fr...

Si, in effetti molte FAQ potrebbero trovarsi indifferentemente in una di
quelle due Sezioni.


Se ti basta il Click singolo puoi fare così:
         Me.ControlloImmagine.HyperlinkAddress = Me.Path_Foto
In questo modo con il Click sull'immagine si apre di default il
programma
associato.
Se invece devi controllare la cosa:
La cosa più immediata(che mi viene in mente) è recuperare tramite le
API il file EXE associato all'estensione, cosa estremamente semplice
con la chiamata FindExecutable, quindi comporre la stringa da passare
alla chiamata con Shell.
Sono 10 righe di codice in tutto, la funzione FindExecutable la trovi
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/findexecutable.asp
Ciao
@Alex

us/shellcc/platform/shell/reference/functions/findexecutable.asp
Sembrerebbe fare al caso mio, però come la dichiaro e come la uso?
Ciao
Marco

> Sembrerebbe fare al caso mio, perň come la dichiaro e come la uso?
Io l'ho dichiarata cosě all'inizio del modulo:
Private Declare Function apiFindExecutable Lib "shell32.dll" _
    Alias "FindExecutableA" _
    (ByRef lpFile As String, _
    ByRef lpDirectory As String, _
    ByRef lpResult As String) _
    As Long
Ho messo FindExecutableA anzichč FindExecutable altrimenti mi dava errore.
Per usarla faccio cosě:
    Dim prgPath As String
    Dim res As Long
    res = apiFindExecutable(getPath() & "test.jpg", getPath(), prgPath)
    MsgBox res & " - " & prgPath
Ma il risultato č: "2 - ". prgPath č una stringa vuota.
La funzione getPath() restituisce un percorso del tipo C:\dir1\dir2\...\.
Ed il file test.jpg esiste davvero in quella cartella.
Ciao
Marco 

> Sembrerebbe fare al caso mio, però come la dichiaro e come la uso?
Ho risolto!
Ciao
Marco