Newsgroup: it.comp.appl.access
Titolo: Aprire q.siasi file (pdf, txt, ...) SITOCOMUNE

Sul sito ho trovato diverse modalità per aprire q.que tipo file venga , ad 
esempio, inserito in una listbox.
A me funziona la modalità con Shell + file.bat, senonchè il problema è che 
mi rimane attiva la finestra di DOS finchè il file aperto non viene chiuso.
Ho anche provato a vedere il n. di task in esecuzione prima di lanciare la 
shell (es. i=13) e ho fatto un ciclo che chiudesse il cmd.exe dopo che i=15 
(i nuovi task sono il cmd.exe e il programma associato al file aperto...) ma 
così ci sono problemi con alcuni file (es. Excel, perchè quando arriva a 15 
ha appena aperto Excel ma non il file di Excel...).
Di comandi bat non so nulla, ma c'è un modo per lanciare il file bat 
(all'interno del quale c'è solo, ad esempio, "C:\prova.txt") e poi chiuderlo 
o perlomeno nnon renderlo visibile?
Grazie,
Renato. 

 wrote in message
news:5ucwf.34667$
eD5.5...@twister2.libero.it

Perchè mai devi lanciare un file BAT per aprire un altro programma...?
Usa WSH metodo RUN
Const MAXIMIZE_WINDOW = 3
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "notepad.exe", MAXIMIZE_WINDOW
oppure SHELL stessa.
retVal=SHELL(PathApplicativo & chr(34) & nome & chr(34),vbMaximized)
Per sapere l'EXE associato usa FindExecutable(API) nel caso non
sia un EXE
Alternativa è usare ShellExecute(API) decisamente
ben documentata :
http://www.mvps.org/access/api/api0018.htm
Hai un sacco di metodi tutti validi e tu scegli il meno convenzionale.
BOh...!
 
Saluti
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:81c2a19f2b2879c216...@mygate.mailgate.org...

Il fatto è che nella mia listbox potrei avere tanto file di testo quanto 
file pdf o per assurdo file avi...
Avevo provato le altre soluzioni proposte su sitocomune tramite il codice:
Dim oWshShell
Set oWshShell = CreateObject("WScript.Shell")
oWshShell.Run  Chr$(34) & "C:\MiaDirectory\MioFile.pdf" & Chr$(34)
Set oWshShell = Nothing
oppure
Dim ret As Integer
ret = Shell("rundll32.exe url.dll,FileProtocolHandler " & 
"C:\MiaDirectory\MioFile.pdf", vbMaximizedFocus)ma entrambi i metodi non 
funzionavano...Ora proverò con ShellExecute e in alternativa il tuo modo 
dopo aver trovato il path dell'applicativo associato.PS: Certo è sicuramente 
il meno convenzionale (...non avrei mai pensato di usare file bat) maè 
l'unico che mi sembrava funzionare...Grazie come sempre per i tuoi preziosi 
consigli.Ciao, Renato. 

 consigli.Ciao, Renato.
ALT.
Prima di fare le cose a mo dì pecora pensiamo.
Public Sub ExecuteFile(FilePath As String)
'Esegue file
On Error GoTo error
Dim ret As Integer
ret = Shell("rundll32.exe url.dll,FileProtocolHandler " & (FilePath))
Exit Sub
error:  MsgBox Err.Description, vbExclamation, "Error"
End Sub
Usa questa e deve funzionare, se non funziona per alcuni tipi di file
è perchè non sono associati a nessun EXE, e d in questo caso non
puoi aprirli in nessun modo se non scegliendo tu che EXE associargli.


 ha scritto nel messaggio 
news:7a5395ff0556014cd5...@mygate.mailgate.org...

Mitico, funziona benissimo e senza problemi.. certo non ne dubitavo!
Visto che la mia listbox è su un FE, i dati caricati sulla listbox sono 
comuni a tutti e dato che q.cuno potrebbe non avere alcune estensioni 
associate ad un dato programma,  forse penso che sarebbe una valida 
soluzione anche usare la ShellExecute che mi hai consigliato.
Ancora grazie,
Renato.