Newsgroup: it.comp.lang.visual-basic
Titolo: Attivazione applicazioni (word, excel, carel draw, ecc.) da un programma visual basic

All'interno di un programma VB, avendo a disposizione il nome di un
file con la relativa estensione, vorrei poter attivare l'applicazione
relativa all'estensione con le stesse modalità del doppio click su un
file di desktop
Esempio: se il file si chiama "x.doc" : apre una sessione di word su
x.doc se word non è attivo; se word è già attivo apre un'ulteriore
finestra relativa a x.doc nella sessione esistente di word.
 
ringrazio anticipatamente chiunque mi possa aiutare

 wrote in message 377636b1...@news.tin.it...


 CIAUX
Bhe a dire il vro io cosi non ci sono riuscito:
o meglio se dal prompt del dos scrivo "start c:\documenti\lello.doc" mi
avvia il word e mi apre il documento lello.doc, ma se scrivo shell "start
c:\documeti\lello.doc" mi dice (con grande simpatia=)) IMPOSSIBILE TROVARE
IL FILE!
Hai idea del perché Keeper?
                                                Ogni suggerimento é gradito

 IL FILE!
l'istruzione Shell non gestisce le associazioni tra un file e l'eseguibile
che lo apre.
Devi usare l'API ShellExecute.
Ti invio un esempio liberamente tratto da MSDN
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String,
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd
As Long) As Long
Public Const ERROR_BAD_EXE_FORMAT = 193&
Public Const ERROR_FILE_NOT_FOUND = 2&
Public Const ERROR_PATH_NOT_FOUND = 3&
Public Const SE_ERR_ACCESSDENIED = 5
Public Const SE_ERR_ASSOCINCOMPLETE = 27
Public Const SE_ERR_DDEBUSY = 30
Public Const SE_ERR_DDEFAIL = 29
Public Const SE_ERR_DDETIMEOUT = 28
Public Const SE_ERR_DLLNOTFOUND = 32
Public Const SE_ERR_FNF = 2
Public Const SE_ERR_NOASSOC = 31
Public Const SE_ERR_OOM = 8
Public Const SE_ERR_PNF = 3
Public Const SE_ERR_SHARE = 26
Public Const SW_SHOWNORMAL = 1
Function ExecuteDLL(ByVal hWnd As Long, ByVal fName As String, ByRef msg As
String) As Boolean
    Dim ret As Integer
 
    On Error Resume Next
    ret = ShellExecute(hWnd, vbNullString, fName, vbNullString, "c:\",
SW_SHOWNORMAL)
    If ret < 32 Then
        ExecuteDLL = False
        Select Case ret
            Case ERROR_BAD_EXE_FORMAT
                msg = "Formato EXE non valido"
            Case ERROR_FILE_NOT_FOUND
                msg = "File non trovato"
            Case ERROR_PATH_NOT_FOUND
                msg = "Percorso non trovato"
            Case SE_ERR_ACCESSDENIED
                msg = "Accesso negato"
            Case SE_ERR_ASSOCINCOMPLETE
                msg = "Associazione incompleta"
            Case SE_ERR_DDEBUSY
                msg = "DDE busy"
            Case SE_ERR_DDEFAIL
                msg = "DDE fail"
            Case SE_ERR_DDETIMEOUT
                msg = "DDE timeout"
            Case SE_ERR_DLLNOTFOUND
                msg = "DLL non trovata"
            Case SE_ERR_FNF
                msg = "File non trovato"
            Case SE_ERR_NOASSOC
                msg = "File senza associazione"
            Case SE_ERR_OOM
                msg = "Memoria insufficiente"
            Case SE_ERR_PNF
                msg = "Percorso non trovato"
            Case SE_ERR_SHARE
                msg = "Errore di violazione"
        End Select
    Else
        ExecuteDLL = True
    End If
End Function

Mi sono dimenticato di dire che io ho Win NT 4.0......... probabilmente non
funziona perché mentre in win 98 c'e l'eseguibile "start.exe" in NT no (o
almeno io non l'ho trovato =(   )
Il problema comunque resta:     come implementare la stessa cosa su Win NT
4.0 ?
Ciriciao Marco
mde...@stardust.it

4.0 ?
Con la soluzione proposta da Luigi Casiglio...
Ciao,
Moreno
#sirri#@
morenosoft.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
Home Page - 
http://www.geocities.com/SiliconValley/Bridge/1414/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

...
splendido! In alternativa, non si potrebbe usare il controllo contenitore
OLE ?

 scritto nell'articolo
<01bec1d2$d916de00$LocalHost@alexsode>...


 ...non capisco cosa intendi, ma mi interessa. Puoi spiegarti meglio ?
c'č un controllo standard chiamato OLE, lo metti sul form, a quel punto ti
chiede a quale documento collegarlo (foglio di lavoro Excel, documento
Word, immagine bitmap, ecc. ecc.)
Puoi inserire un ogg. da un file esistente o crearne uno nuovo o annullare
(per il momento) e poi collegarlo a un oggetto in run-time col metodo
CreateLink.
Eventualmente, si imposta la proprietą Visible a False (per gli scopi del
ns. amico non serve la visibilitą)
Poi esegui il metodo DoVerb e si apre il documento Word o quant'altro hai
associato al contenitore OLE

 ns. amico non serve la visibilità)
